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