Варијабле се даље класификују у 'локалну' и 'глобалну' варијаблу, што је главна тема наше дискусије. Овде је главна разлика између локалне и глобалне променљиве у томе што је локална променљива декларисана унутар функцијског блока, где је глобална променљива декларисана ван функција у програму.
Проучимо још неколико разлика између локалне и глобалне варијабле заједно са табелом поређења.
Табела за упоређивање:
Основа за поређење | Лоцал Вариабле | Глобал Вариабле |
---|---|---|
Декларација | Варијабле се декларишу унутар функције. | Варијабле се објављују изван било које функције. |
Обим | Унутар функције, унутар које су декларисане. | Кроз програм. |
Приступ | Приступају им само изјаве, унутар функције у којој су декларисане. | Приступити било којој изјави у цијелом програму. |
Живот | Креира се када се унесе функционални блок и уништи на излазу. | Останите у току цијело вријеме док се програм изводи. |
Складиште | Локалне варијабле су похрањене у стог, осим ако није специфицирано. | Похрањује се на фиксној локацији коју одређује компајлер. |
Дефиниција локалне променљиве
Локална променљива се увек декларише унутар функционалног блока. У Ц, локална променљива се декларише на почетку блока кода. У Ц ++, они се могу декларисати било где у блоку кода пре њихове употребе. Локалним варијаблама може се приступити само помоћу наредби написаних унутар функције у којој се локална варијабла декларише. Они су сигурни у смислу да им не може приступити ниједна друга функција истог програма.
Локална варијабла постоји све док се блок функције не изврши и тиме уништи након изласка из блока. Локалне варијабле губе садржај чим извршење напусти блок у којем су декларисане.
Разлог томе је што су локалне варијабле похрањене на стацку, осим ако није специфицирано њихово специјално складиште. Стацк је по природи динамичан, а промена меморијске локације доводи до разлога зашто локална варијабла не задржава своју вриједност чим блок функције постоји.
Белешка:
Међутим, постоји начин да се задржи вредност локалне променљиве, коришћењем 'статичког' модификатора.
Дефиниција глобалне варијабле
Глобална променљива се декларише изван свих функција које су присутне у програму. За разлику од локалних варијабли, глобалној варијабли може се приступити било која функција присутна у програму. Глобалне варијабле нису много поуздане јер се њихова вриједност може промијенити било којом функцијом присутном у програму.
Глобалне варијабле остају присутне све док се цијели програм не изврши у потпуности. Глобалне варијабле задржавају своје вриједности док се програм не изврши. Разлог томе је што су они ускладиштени на фиксном подручју меморије, о чему одлучује компајлер.
Глобална варијабла је корисна у ситуацијама када више функција приступа истим подацима. Употреба великог броја глобалних варијабли може бити проблематична, јер могу постојати нежељене промјене у вриједности глобалне варијабле.
Кључна разлика између локалне и глобалне варијабле.
- Локалне варијабле се називају 'локално' зато што су познате само за изјаве написане у функцији унутар које су декларисане и нису познате било којој другој функцији која је присутна изван тог функцијског блока. У случају глобалне варијабле, оне су познате свакој функцији присутној у програму; стога се називају 'глобалним'.
- Глобалне варијабле задржавају своју вриједност све док програм није у фази извођења, јер се похрањују на фиксној локацији коју одређује компајлер. Локалне варијабле су похрањене у стог; стога, они не задржавају своју вриједност као 'стацк' је динамички по природи, али компајлер може бити усмјерен да задржи своју вриједност, користећи 'статички' модификатор.
- Ако су тада глобална и локална варијабла декларисане са истим именом, сви изрази кодног блока у којима је локална променљива декларисана односе се само на локалну променљиву и неће имати ефекта на глобалну променљиву.
- Локална варијабла се уништава када контрола програма изађе из блока у којем је локална варијабла декларисана. Међутим, глобална променљива се уништава када се заврши цео програм.
Закључак:
Локалне и глобалне варијабле су подједнако потребне приликом писања програма. Међутим, проглашавање великог броја глобалних варијабли може бити проблематично у великом програму, јер може изазвати нежељене промјене у глобалној варијабли; и било би тешко идентификовати који дио програма је направио ту промјену. Дакле, треба избегавати декларисање непотребних глобалних варијабли.