Разлика между локална и глобална променлива
Основни разлики между локална променлива и глобална променлива
- Локалната променлива се декларира вътре във функция, докато глобалната променлива се декларира извън функцията.
- Локалните променливи се създават, когато функцията започне да се изпълнява и се губят, когато функцията приключи, от друга страна, глобалната променлива се създава, когато изпълнението започне и се губи, когато програмата приключи.
- Локалната променлива не осигурява споделяне на данни, докато глобалната променлива осигурява споделяне на данни.
- Локалните променливи се съхраняват в стека, докато глобалната променлива се съхранява на фиксирано място, определено от компилатора.
- Предаването на параметри се изисква за локални променливи, докато не е необходимо за глобална променлива
Какво е променлива?
Променливата е име, присвоено на област за съхранение, която програмата може да манипулира. Типът променлива определя размера и разположението на паметта на променливата.
Той също така определя обхвата от стойности, които трябва да се съхраняват в тази памет, и естеството на операциите, които могат да бъдат приложени към тази променлива.
Обхват на променливите
Обхватът на променливата е просто животът на променливата. Това е блок от код, под който дадена променлива е приложима или жива. Например:
function foo(){ var x; }
Вие декларирате променлива „x“ във функция „foo“. Обхватът на тази променлива остава вътре в тази функция и не може да се използва извън тази функция.
Има три места, където променливите можете да декларирате език за програмиране на променливи:
- Вътре във функция или блок: Локални променливи
- Извън всички функции: Глобални променливи
- В дефиницията на функционални параметри: Формални параметри
Локална променлива
Локална променлива се дефинира като тип променлива, декларирана в програмен блок или подпрограми. Може да се използва само вътре в подпрограмата или кодовия блок, в който е деклариран. Локалната променлива съществува, докато блокът на функцията е в процес на изпълнение. След това ще бъде унищожен автоматично.
Пример за локална променлива
public int add(){ int a =4; int b=5; return a+b; }
Тук 'a' и 'b' са локални променливи
Глобална променлива
A Глобална променлива в програмата е променлива, дефинирана извън подпрограмата или функцията. Има глобален обхват, което означава, че запазва стойността си през целия живот на програмата. Следователно, той може да бъде достъпен в цялата програма от всяка функция, дефинирана в програмата, освен ако не е засенчена.
Пример:
int a =4; int b=5; public int add(){ return a+b; }
Тук 'a' и 'b' са глобални променливи.
Локална променлива срещу глобални променливи
Ето някои основни разлики между локалните и глобалните променливи.
Параметър | местен | В световен мащаб |
---|---|---|
Обхват | Декларира се във функция. | Декларира се извън функцията. |
Стойност | Ако не се инициализира, се съхранява стойност за боклук | Ако не е инициализирано, нулата се съхранява по подразбиране. |
Човешки живот | Създава се, когато функцията започне да се изпълнява, и се губи, когато функциите прекратят работа. | Създава се преди да започне глобалното изпълнение на програмата и се губи, когато програмата приключи. |
Споделяне на данни | Споделянето на данни не е възможно, тъй като данните от локалната променлива могат да бъдат достъпни само от една функция. | Споделянето на данни е възможно, тъй като множество функции имат достъп до една и съща глобална променлива. |
параметри | Предаването на параметри е необходимо за локални променливи за достъп до стойността в друга функция | Предаването на параметри не е необходимо за глобална променлива, тъй като е видимо в цялата програма |
Промяна на стойността на променливата | Когато стойността на локалната променлива се промени в една функция, промените не се виждат в друга функция. | Когато стойността на глобалната променлива се промени в една функция, промените са видими в останалата част от програмата. |
Достъп от | Локалните променливи могат да бъдат достъпни с помощта на изрази във функция, в която са декларирани. | Можете да получите достъп до глобалните променливи чрез всеки оператор в програмата. |
Съхранение на паметта | Съхранява се в стека, освен ако не е посочено. | Той се съхранява на фиксирано място, определено от компилатора. |
Предимства от използването на глобални променливи
- Можете да получите достъп до глобалната променлива от всички функции или модули в програмата
- Трябва само да декларирате глобална променлива един път извън модулите.
- Идеално се използва за съхраняване на „константи“, тъй като ви помага да запазите последователността.
- Глобалната променлива е полезна, когато множество функции имат достъп до едни и същи данни.
Предимства на използването на локални променливи
- Използването на локални променливи предлага гаранция, че стойностите на променливите ще останат непокътнати, докато задачата се изпълнява
- Ако няколко задачи променят една променлива, която се изпълнява едновременно, тогава резултатът може да е непредвидим. Но декларирането му като локална променлива решава този проблем, тъй като всяка задача ще създаде свой собствен екземпляр на локалната променлива.
- Можете да дадете на локалните променливи едно и също име в различни функции, защото те се разпознават само от функцията, в която са декларирани.
- Локалните променливи се изтриват веднага щом някоя функция приключи и се освобождава пространството в паметта, което заема.
Недостатъци на използването на глобални променливи
- Твърде много променливи са декларирани като глобални, след което те остават в паметта до завършване на изпълнението на програмата. Това може да причини проблем с липсата на памет.
- Данните могат да се променят от всяка функция. Всеки израз, написан в програмата, може да промени стойността на глобалната променлива. Това може да доведе до непредвидими резултати в среда с множество задачи.
- Ако глобалните променливи са преустановени поради рефакторинг на кода, ще трябва да промените всички модули, където се извикват.
Недостатъци на използването на локални променливи
- Процесът на отстраняване на грешки на локална променлива е доста труден.
- Общите данни трябва да се предават многократно, тъй като споделянето на данни не е възможно между модулите.
- Те имат много ограничен обхват.
Какво е по-полезно?
Локалната и глобалната променлива са еднакво важни при писане на програма на всеки език. Въпреки това, голям брой от глобалната променлива може да заемат огромна памет. Нежелана промяна в глобалните променливи става трудна за идентифициране. Поради това е препоръчително да избягвате декларирането на нежелани глобални променливи.