Каква е разликата между местните и глобалните променливи?

Повечето езици за програмиране поддържат местни и глобални променливи.

Местни променливи

Местните променливи съществуват само в рамките на дадена функция, част от програмния код, която изпълнява конкретна задача, в която са дефинирани или декларирани. Те престават да съществуват, след като функцията бъде изпълнена. Местните променливи се пресъздават всеки път, когато функцията се извиква или изпълнява. Тези променливи не са достъпни за други функции или за основната програма и като такива те обикновено се изпълняват, използвайки специален тип структура от данни, известен като стек.

батерия

На много програмни езици "стекът" е ключов елемент при внедряването на локалните променливи. Преди да изпълни дадена функция, програмата добавя всички локални променливи, декларирани в тази функция, в стека, в обратен ред, в който са декларирани. Когато програмата извиква функцията, локалните променливи се премахват от стека в обратен ред, затова последната добавена променлива е първата, която трябва да бъде изтрита.

Глобални променливи

Глобалните променливи се декларират в главното тяло на изходния код на програмата, извън всички функции и следователно съществуват във всяка част от кода, дори и в рамките на функциите. Глобалните променливи не се пресъздават всеки път, когато се извиква определена функция. Програмите често използват глобални променливи за съхраняване на данни, които се обработват от много различни функции. Една проста програма за редактиране на текст, например, може да зареди съдържанието на файла, в който работите върху глобална променлива.

Предимства и недостатъци

Местните променливи правят компютърните програми по-лесни за отстраняване на грешки и поддръжка. Програмистите могат да определят точната точка, в която дадена програма променя стойността на локалната променлива, докато глобалните променливи могат да бъдат променяни навсякъде в изходния код. Местните променливи също генерират по-малко неочаквани взаимодействия с повиквания към функции или външен свят, известни като странични ефекти, отколкото глобалните променливи. Глобалните променливи са достъпни при функции, при които те не се използват, в противоречие с концепцията за модулно програмиране, при която кодът на програмата се състои от блокове или малки изолирани модули, така че програмистите да облагодетелстват рядката модулна структура те ги използват