Zmienne w każdym języku programowania odgrywają kluczową rolę. Zmienne są klasyfikowane na zmienne globalne i zmienne lokalne na podstawie ich zakresu. Główna różnica między zmiennymi globalnymi i lokalnymi polega na tym, że dostęp do zmiennych globalnych można uzyskać globalnie w całym programie, podczas gdy dostęp do zmiennych lokalnych można uzyskać tylko w obrębie funkcji lub bloku, w którym są zdefiniowane. W tym temacie najpierw zrozumiemy, czym są zmienne i zakres, wraz ze zmiennymi lokalnymi, zmiennymi globalnymi, a następnie różnicami między obiema zmiennymi.
Co to jest zmienna?
Zmienna to nazwa nadana komórce pamięci służącej do przechowywania wartości w programie komputerowym. Służy do przechowywania informacji, do których można się odwoływać i którymi można manipulować w programie.
Możemy wybrać dowolną nazwę zmiennej, ale musi ona być zgodna z semantyką programowania. Takie, jakie może być , a, b, x, y, z, sub, div, total, avg itp .
Załóżmy, że istnieją dwie wartości, 10 i 20, które chcemy przechowywać i używać w naszym programie. W tym celu musimy użyć zmiennej i wykonamy poniższe kroki:
- Najpierw utworzymy lub zadeklarujemy zmienną o odpowiedniej nazwie.
- Przypisz te wartości do zmiennych, aby je przechowywać.
- Gdy te wartości zostaną zapisane, możemy użyć tych zmiennych z ich nazwami w naszym programie.
Jak widać na powyższym obrazku, istnieją dwa gniazda pamięci, 001 i 002, którym nadaliśmy nazwy A i B. A zawiera 10, a B zawiera 20.
sortowanie bąbelkowe
Różne języki programowania mają różne sposoby deklarowania zmiennej. Przykładowo w języku C możemy zadeklarować zmienną w następujący sposób:
Składnia: (Składnia deklaracji zmiennej w języku C)
rekha indyjski
datatype v1, v2, v3,....;
Przykład:
#include void main(){ int a; int b; int sum; }
Zakres zmiennej
Każda zmienna jest zdefiniowana i może być używana w swoim zakresie oraz określa, w którym programie dana zmienna jest dostępna do użycia. Zakres oznacza czas życia tej zmiennej. Oznacza to, że zmienna może być dostępna lub widoczna tylko w jej zakresie.
Zakres zmiennych można zdefiniować poprzez ich deklarację, a zmienne deklaruje się głównie na dwa sposoby:
Co to jest zmienna globalna?
- Zmienne globalne to te zmienne, które są zadeklarowane poza wszystkimi funkcjami lub blokami i można uzyskać do nich globalny dostęp w programie.
- Dostęp do niego można uzyskać za pomocą dowolnej funkcji występującej w programie.
- Po zadeklarowaniu zmiennej globalnej jej wartość można zmieniać w zależności od zastosowania w różnych funkcjach.
- Czas życia zmiennej globalnej istnieje do momentu wykonania programu. Zmienne te są przechowywane w stałych lokalizacjach pamięci podanych przez kompilator i nie są automatycznie czyszczone.
- Zmienne globalne są najczęściej używane w programowaniu i przydatne w przypadkach, gdy wszystkie funkcje muszą mieć dostęp do tych samych danych.
Przykład:
#include int a=50, b=40; void main() { printf('a = %d and b=%d',a,b); }
W powyższym przykładzie aib są zmiennymi globalnymi.
Zalety zmiennej globalnej
- Dostęp do zmiennych globalnych można uzyskać za pomocą wszystkich funkcji występujących w programie.
- Wymagane jest tylko jedno oświadczenie.
- Bardzo przydatne, jeśli wszystkie funkcje uzyskują dostęp do tych samych danych.
Wady zmiennej globalnej
- Wartość zmiennej globalnej może zostać przypadkowo zmieniona, ponieważ może zostać użyta przez dowolną funkcję w programie.
- Jeśli użyjemy dużej liczby zmiennych globalnych, wówczas istnieje duże prawdopodobieństwo wygenerowania błędu w programie.
Co to jest zmienna lokalna?
- Dostęp do tych zmiennych można uzyskać wyłącznie w ramach funkcji, w której zostały zadeklarowane.
- Czas życia zmiennej lokalnej mieści się wyłącznie w jej funkcji, co oznacza, że zmienna istnieje do momentu wykonania funkcji. Po zakończeniu wykonywania funkcji zmienne lokalne są niszczone i nie istnieją już poza funkcją.
- Powodem ograniczonego zakresu zmiennych lokalnych jest to, że zmienne lokalne są przechowywane na stosie, który ma charakter dynamiczny i automatycznie czyści przechowywane na nim dane.
- Ale ustawiając zmienną statyczną za pomocą słowa kluczowego „static”, możemy zachować wartość zmiennej lokalnej.
Przykład:
#include void main() { int x=50, y=40; printf('x = %d and y=%d',x, y); }
W powyższym przykładzie zadeklarowaliśmy x i y dwie zmienne wewnątrz funkcji głównej. Są to zatem zmienne lokalne.
Zalety zmiennej lokalnej
- Ta sama nazwa zmiennej lokalnej może być używana w różnych funkcjach, ponieważ jest rozpoznawana tylko przez funkcję, w której jest zadeklarowana.
- Zmienne lokalne wykorzystują pamięć tylko przez ograniczony czas, gdy funkcja jest wykonywana; po czym można ponownie wykorzystać tę samą lokalizację pamięci.
Wady zmiennych lokalnych
- Zasięg zmiennej lokalnej jest ograniczony tylko do jej funkcji i nie może być używany przez inne funkcje.
- Udostępnianie danych przez zmienną lokalną jest niedozwolone.
Tabela porównawcza między zmienną globalną a zmienną lokalną
Zmienna globalna | Zmienna lokalna |
---|---|
Zmienne globalne deklarowane są poza wszystkimi blokami funkcyjnymi. | Zmienne lokalne deklarowane są w bloku funkcyjnym. |
Zakres pozostaje taki sam przez cały program. | Zakres jest ograniczony i mieści się wyłącznie w ramach funkcji, w której są zadeklarowane. |
Jakakolwiek zmiana zmiennej globalnej ma wpływ na cały program, gdziekolwiek jest ona używana. | Jakakolwiek zmiana zmiennej lokalnej nie ma wpływu na inne funkcje programu. |
Zmienna globalna istnieje w programie przez cały czas wykonywania programu. | Zmienna lokalna jest tworzona podczas wykonywania funkcji, a po zakończeniu wykonywania zmienna jest niszczona. |
Dostęp do niego można uzyskać w całym programie za pomocą wszystkich funkcji dostępnych w programie. | Dostęp do niego można uzyskać jedynie poprzez instrukcje funkcyjne, w których jest zadeklarowany, a nie przez inne funkcje. |
Jeśli zmienna globalna nie została zainicjowana, domyślnie przyjmuje zero. | Jeśli zmienna lokalna nie została zainicjowana, domyślnie przyjmuje wartość śmieciową. |
Zmienne globalne są przechowywane w segmencie danych pamięci. | Zmienne lokalne są przechowywane na stosie w pamięci. |
Nie możemy zadeklarować wielu zmiennych o tej samej nazwie. | Możemy deklarować różne zmienne o tej samej nazwie, ale w innych funkcjach. |
Przykłady pozwalające zrozumieć różnice między zmienną lokalną i globalną
Teraz zrozumiemy przykłady w różnych językach programowania, aby lepiej zrozumieć różnicę między zmiennymi lokalnymi i globalnymi.
dla każdego maszynopisu
Lokalne a globalne w C
Przykład 1:
#include // Global variables int a; int b; int Add() { return a + b; } int Mul() { int c=10; //Local Variable int d=20; ////Local Variable return c*d; } void main() { int Ans1, Ans2, c=30;// Local variable a = 50; b = 70; Ans1 = Add(); Ans2= Mul(); printf('The addition result is: %d ',Ans1); printf('The Multiplication result is: %d ',Ans2); printf('%d ', c); }
Wyjście:
jakie miesiące są w 3 kw
The addition result is: 120 The Multiplication result is: 200 30
Jak widać w powyższym programie, wzięliśmy A I B zmienne globalne, do których uzyskuje się dostęp w różnych funkcjach, takich jak Add() i main(). Istnieją również zmienne lokalne, takie jak c, d, Ans1 i Ans2, do których dostęp mają tylko te funkcje, w których są zadeklarowane.
Jeśli spróbujemy użyć zmiennych c i d poza funkcją Mul(), zostaną one użyte jako nowe zmienne. Jak pokazaliśmy, biorąc c również do funkcji main(), jest ono traktowane jako nowa zmienna.
Lokalne vs. Globalny w Pythonie
Przykład 1:
v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) func1() #calling func1 def func2(): print(v1) func2() #callin func2
Wyjście:
Hey, I am a Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program.
W powyższym programie wzięliśmy jedną zmienną globalną v1 i jedną zmienną lokalną v2. Ponieważ wersja v1 jest globalna, można do niej łatwo uzyskać dostęp w dowolnej funkcji, a wersja v2 jest lokalna; jest używany tylko w ramach zadeklarowanej funkcji. Ale jeśli spróbujemy użyć v1 w func1, wyświetli się błąd. Zobaczmy poniższy przykład:
Przykład-2
v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) print(v1) func1() #calling func1 def func2(): print(v1) print(v2) func2() #callin func2
Jeśli spróbujemy uzyskać dostęp do v1, będzie można łatwo uzyskać do niego dostęp w fun1 i func2. Ale jeśli spróbujemy uzyskać dostęp do v2 poza jego funkcją, co oznacza w func2, zwróci to błąd wykonania. Po wykonaniu powyższego kodu otrzymamy poniższe dane wyjściowe:
Błąd wykonania:
polecenia systemu Linux które
NameError: global name 'v2' is not defined
Wyjście:
Hey, I am Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. Hey, I am Global Variable!, I can be used everywhere in the program.
Lokalne vs. Zmienna globalna w Javie
W Javie nie ma pojęcia zmiennych globalnych; ponieważ Java jest językiem programowania zorientowanym obiektowo, wszystko jest częścią klasy. Ale jeśli chcemy, aby zmienna była dostępna globalnie, możemy uczynić ją statyczną, używając a statyczny Słowo kluczowe.
class Demo { // static variable static int a = 10; // non-static or local variable int b = 20; } public class Main { public static void main(String[] args) { Demo obj = new Demo(); // accessing the non-static variable System.out.println('Value of non-static variable is: ' + (obj.b)); // accessing the static variable System.out.println('Value of static variable is:' + (Demo.a)); } }
Wyjście:
Value of non-static variable is: 20 Value of static variable is:10
W powyższym programie użyliśmy jednej zmiennej lokalnej lub zmiennej niestatycznej i jednej zmiennej statycznej. Dostęp do zmiennej lokalnej można uzyskać poprzez obiekt klasy Demo, natomiast dostęp do zmiennej statycznej można uzyskać poprzez nazwę klasy.