Interested Article - Глобальная переменная

Глобальная переменная в программировании переменная , областью видимости которой является вся программа, если только она не . Механизмы взаимодействия с глобальными переменными называют механизмами доступа к глобальному окружению или состоянию ( англ. global environment , global state ). Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передачи аргументов и возвращения значений .

Использование глобальных переменных имеет недостатки: глобальная переменная может быть изменена в любой точке программы (если она не находится в защищённой памяти или объявлена как переменная ), что может повлиять на работу других частей программы . По этой причине глобальные переменные имеют неограниченный потенциал для создания взаимных зависимостей, что приводит к усложнению программы. Однако в некоторых случаях бывает полезно использовать глобальные переменные. Например, они могут быть использованы, чтобы избежать необходимости прохода часто используемых переменных через несколько функций. Глобальные переменные также затрудняют интеграцию модулей , поскольку код, написанный ранее, может содержать глобальные переменные с теми же именами, что и во встраиваемом модуле.

Глобальные переменные широко используются для передачи данных между секциями кода, которые не участвуют в отношениях вызовов, такие как параллельные нити исполнения или обработчики сигналов . Без надлежащей блокировки (например, с помощью мьютекса ), код, использующий глобальные переменные, не будет потокобезопасным , за исключением переменных, доступных только для чтения в защищённой области памяти . С увеличением количества переменных и, соответственно, блокировок увеличивается вероятность взаимных блокировок .

Пример на Си :

int a; /* Объявление глобальной целочисленной переменной «а» */
float b = 6; /* Объявление глобальной переменной с плавающей запятой «b» и присваивание ей значения «6» */

int main(void)
{
    a = 12; /* Присваивание переменной «а» значения «12» */
    return a+b;
}

Примечания

  1. Керниган и Ритчи Язык программирования Си — С. 44, 87.
  2. William Wulf and Mary Shaw, «Global Variable Considered harmful», ACM SIGPLAN Notices, volume 8, issue 2, 1973 February, С. 28-34.

Ссылки

Источник —

Same as Глобальная переменная