Разлика между версии на „Променлива (програмиране)“

м
→‎Обхват: Доста странни обяснения, вероятно заради превод.
м (→‎Обхват: Доста странни обяснения, вероятно заради превод.)
Обхватът описва къде в текста на програмата променливата може да се използва, а времето на живот описва кога през времето на изпълнение на програмата тя има стойност.
 
Повечето езици за програмиране дефинират специфичен обхват за всяка променлива, който може да варира в рамките на една и съща програма. Обхватът е част от програмен код, за който името на променливата има смисъл и за който казваме, че тя е видима. Влизането в този обхват обикновено се свърза с началото на живота на дадената променлива, а излизането от обхвата е краят на нейния живот. Например променлива с лексикален обхват има смисъл само в рамките на определена функция/ (подпрограма) или, казано по-прецизно, в рамките на блок от изрази; това е статична„статична резолюциярезолюция“, която се извършва по време на разбора на програмата или по време на компилирането ѝ. От друга страна, променлива с динамичен обхват се определя по време на изпълнение на програмата, базирано на глобалния стек. Променливи, които са достъпни само в рамките на определена функция, са наричани локални. Глобалните променливи са достъпни навсякъде в програмата.
 
Ако програмният език не поддържа система за почистване на паметта (garbage collection), променлива, чийто живот преминава постоянно обхвата, може да доведе до липса на памет, тъй като паметта, заделена за нея, може никога да не бъде освободена. Въпреки че може и да е разрешено променлива да преминава нейния обхват, както е например в [[Lisp]] и при локалните статични променливи в C, когато изпълнението се връща обратно в обхвата на променливата, тя може още веднъж да бъде използвана. Променлива, чийто обхват започва преди нейното време на живот, се нарича неинициализирана и често има недефинирана, случайна стойност, при опит за използване, освен ако не ѝ е дадена експлицитно определена стойност. Променлива, чийто живот приключва преди нейния обхват, може да се превърне във висящ указател и да бъде неинициализирана, въпреки че нейната стойност е била вече унищожена. В повечето езици за програмиране, ако се опитаме да използваме променлива, от описаните два случая, ще се върне грешка. В други езици обаче, това може да доведе до непредвидими резултати. Въпреки това на такива променливи може да бъде дадена нова стойност, която да поднови живота им.
 
За по-добра ефективност на паметта, паметта нужна за променливата може да бъде заделена, когато тя се използва за първи път, и да бъде освободена, когато вече не се използва. Възможно е да се дефинира променлива, за която да се задели памет, но по-късно в програмата тя да не се използва. За да се предотврати такава загуба на памет, компилаторите често предупреждават програмистите, че има променливи, които са дефинирани, но не са използвани.