logo

Разлика између локалне променљиве и глобалне променљиве

Променљиве у било ком програмском језику имају кључну улогу. Променљиве су класификоване у Глобалне и Локалне варијабле на основу њиховог опсега. Главна разлика између глобалних и локалних променљивих је у томе што се глобалним променљивим може приступити глобално у целом програму, док се локалним променљивим може приступити само унутар функције или блока у којем су дефинисане. У овој теми ћемо прво разумети шта су променљиве и опсег, заједно са локалним променљивим, глобалним променљивим, а затим и разлике између обе променљиве.

Локална променљива против глобалне променљиве

Шта је променљива?

Променљива је име дато меморијској локацији за чување вредности у рачунарском програму. Користи се за чување информација које се могу референцирати и којима се може манипулисати у програму.

стринг у инт јава

Можемо изабрати било које име за променљиву, али оно мора да прати семантику програмирања. Такав какав може бити , а, б, к, и, з, суб, див, тотал, авг, итд .

Рецимо да постоје две вредности, 10 и 20, које желимо да сачувамо и користимо у нашем програму. За ово морамо да користимо променљиву, а ми ћемо урадити следеће кораке:

  • Прво ћемо креирати или декларисати променљиву са одговарајућим именом.
  • Доделите те вредности променљивим да бисте их сачували.
  • Када се ове вредности складиште, можемо користити ове променљиве са њиховим именом у нашем програму.
Локална променљива против глобалне променљиве

Као што видимо на горњој слици, постоје два меморијска слота, 001 и 002, и дали смо имена овим локацијама као А и Б. А садржи 10, а Б садржи 20.

Различити програмски језици имају различите начине за декларисање променљиве. На пример, у језику Ц можемо декларисати променљиву на следећи начин:

Синтакса: (синтакса декларације променљиве у језику Ц)

 datatype v1, v2, v3,....; 

Пример:

 #include void main(){ int a; int b; int sum; } 

Обим променљиве

Свака променљива је дефинисана и може се користити у оквиру свог делокруга и одређује да је у оквиру програма ова променљива доступна за коришћење. Опсег значи животни век те променљиве. То значи да променљивој може да се приступи или да је видљива само у оквиру њеног опсега.

Опсег променљивих се може дефинисати њиховом декларацијом, а променљиве се декларишу углавном на два начина:

    Глобална променљива:Изван свих функцијаЛокална променљива:У оквиру функционалног блока:

Шта је глобална варијабла?

  • Глобалне променљиве су оне променљиве које су декларисане изван свих функција или блока и којима се може приступити глобално у програму.
  • Може му се приступити било којом функцијом која је присутна у програму.
  • Једном када декларишемо глобалну променљиву, њена вредност може да се мења као што се користи са различитим функцијама.
  • Животни век глобалне променљиве постоји док се програм не изврши. Ове варијабле се чувају на фиксним меморијским локацијама које је дао компајлер и не чисте се аутоматски.
  • Глобалне променљиве се углавном користе у програмирању и корисне су у случајевима када све функције морају да приступе истим подацима.

Пример:

 #include int a=50, b=40; void main() { printf('a = %d and b=%d',a,b); } 

У горњем примеру, а и б су глобалне променљиве.

низови у Јави

Предности глобалне променљиве

  • Глобалним варијаблама могу приступити све функције присутне у програму.
  • Потребна је само једна декларација.
  • Веома корисно ако све функције приступају истим подацима.

Недостаци глобалне варијабле

  • Вредност глобалне променљиве може се случајно променити јер је може користити било која функција у програму.
  • Ако користимо велики број глобалних променљивих, онда постоји велика шанса за генерисање грешке у програму.

Шта је локална променљива?

    Променљиве које су декларисане унутар или унутар функционалног блока познате су као локалне променљиве.
  • Овим променљивим се може приступити само унутар функције у којој су декларисане.
  • Животни век локалне променљиве је само унутар њене функције, што значи да променљива постоји док се функција не изврши. Када је извршење функције завршено, локалне варијабле се уништавају и више не постоје изван функције.
  • Разлог за ограничен обим локалних променљивих је тај што се локалне променљиве чувају у стеку, који је динамичке природе и аутоматски чисти податке ускладиштене у њему.
  • Али тако што ћемо променљиву учинити статичном помоћу кључне речи 'статиц', можемо задржати вредност локалне променљиве.

Пример:

 #include void main() { int x=50, y=40; printf('x = %d and y=%d',x, y); } 

У горњем примеру, декларисали смо к и и две променљиве унутар главне функције. Дакле, ово су локалне варијабле.

Предности локалне променљиве

  • Исто име локалне променљиве може се користити у различитим функцијама јер га препознаје само функција у којој је декларисана.
  • Локалне променљиве користе меморију само за ограничено време када се функција извршава; након што се та иста меморијска локација може поново користити.

Недостаци локалних варијабли

  • Опсег локалне променљиве је ограничен само на њену функцију и не може је користити друге функције.
  • Дељење података путем локалне променљиве није дозвољено.

Упоредни графикон између глобалне и локалне променљиве

Глобална променљива Локална променљива
Глобалне променљиве су декларисане изван свих функционалних блокова. Локалне променљиве су декларисане унутар функционалног блока.
Обим остаје током целог програма. Обим је ограничен и остаје унутар функције само у којој су декларисани.
Свака промена глобалне променљиве утиче на цео програм, где год да се користи. Свака промена локалне променљиве не утиче на друге функције програма.
Глобална променљива постоји у програму све време док се програм извршава. Локална променљива се креира када се функција изврши, а када се извршавање заврши, променљива се уништава.
Њему се може приступити кроз програм помоћу свих функција присутних у програму. Њему се може приступити само наредбама функције у којима је декларисана, а не другим функцијама.
Ако глобална променљива није иницијализована, подразумевано узима нулу. Ако локална променљива није иницијализована, подразумевано узима вредност смећа.
Глобалне варијабле се чувају у сегменту података меморије. Локалне променљиве се чувају у стеку у меморији.
Не можемо декларисати много променљивих са истим именом. Можемо декларисати различите променљиве са истим именом али у другим функцијама.

Примери за разумевање разлика између локалне и глобалне променљиве

Хајде сада да разумемо примере у различитим програмским језицима да бисмо боље разумели разлику између локалних и глобалних варијабли.

Локално против глобалног у Ц

Пример-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); } 

Излаз:

 The addition result is: 120 The Multiplication result is: 200 30 

Као што видимо у горњем програму, узели смо а и б глобалне променљиве којима се приступа у различитим функцијама као што су Адд() и маин(). Док постоје и локалне варијабле као што су ц, д, Анс1 и Анс2, којима приступају само оне функције у којима су декларисане.

Ако покушамо да користимо ц и д променљиве ван функције Мул(), оне ће се користити као нове променљиве. Као што смо показали узимањем ц у маин() функцији, он се третира као нова променљива.

Локални вс. Глобално у Питхон-у

Пример-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 

Излаз:

 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. 

У горњем програму смо узели једну глобалну променљиву в1 и једну локалну в2. Пошто је в1 глобално, може му се лако приступити у било којој функцији, а в2 је локална; користи се само у оквиру своје декларисане функције. Али ако покушамо да користимо в1 у фунц1, то ће дати грешку. Погледајмо следећи пример:

Пример-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 

Ако покушамо да приступимо в1, лако се може приступити у фун1 и фунц2. Али ако покушамо да приступимо в2 ван његове функције, што значи у фунц2, даће грешку током извршавања. Добићемо доњи излаз након извршавања горњег кода:

Грешка у раду:

 NameError: global name 'v2' is not defined 

Излаз:

 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. 

Локални вс. Глобална променљива у Јави

У Јави не постоји концепт глобалних променљивих; пошто је Јава објектно оријентисани програмски језик, све је део класе. Али ако желимо да променљиву учинимо глобално доступном, можемо је учинити статичном коришћењем а статичне Кључна реч.

јава излазни знакови
 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)); } } 

Излаз:

 Value of non-static variable is: 20 Value of static variable is:10 

У горњем програму користили смо једну локалну променљиву или нестатичку и једну статичку променљиву. Локалној променљивој се може приступити коришћењем објекта класе Демо, док се статичкој променљивој може приступити коришћењем имена класе.