Interested Article - Глобальная переменная
- 2020-09-29
- 1
Глобальная переменная в программировании — переменная , областью видимости которой является вся программа, если только она не . Механизмы взаимодействия с глобальными переменными называют механизмами доступа к глобальному окружению или состоянию ( англ. global environment , global state ). Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передачи аргументов и возвращения значений .
Использование глобальных переменных имеет недостатки: глобальная переменная может быть изменена в любой точке программы (если она не находится в защищённой памяти или объявлена как переменная ), что может повлиять на работу других частей программы . По этой причине глобальные переменные имеют неограниченный потенциал для создания взаимных зависимостей, что приводит к усложнению программы. Однако в некоторых случаях бывает полезно использовать глобальные переменные. Например, они могут быть использованы, чтобы избежать необходимости прохода часто используемых переменных через несколько функций. Глобальные переменные также затрудняют интеграцию модулей , поскольку код, написанный ранее, может содержать глобальные переменные с теми же именами, что и во встраиваемом модуле.
Глобальные переменные широко используются для передачи данных между секциями кода, которые не участвуют в отношениях вызовов, такие как параллельные нити исполнения или обработчики сигналов . Без надлежащей блокировки (например, с помощью мьютекса ), код, использующий глобальные переменные, не будет потокобезопасным , за исключением переменных, доступных только для чтения в защищённой области памяти . С увеличением количества переменных и, соответственно, блокировок увеличивается вероятность взаимных блокировок .
Пример на Си :
int a; /* Объявление глобальной целочисленной переменной «а» */
float b = 6; /* Объявление глобальной переменной с плавающей запятой «b» и присваивание ей значения «6» */
int main(void)
{
a = 12; /* Присваивание переменной «а» значения «12» */
return a+b;
}
Примечания
- Керниган и Ритчи Язык программирования Си — С. 44, 87.
- William Wulf and Mary Shaw, «Global Variable Considered harmful», ACM SIGPLAN Notices, volume 8, issue 2, 1973 February, С. 28-34.
Ссылки
- 2020-09-29
- 1