WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

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

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

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

Пример на Си:

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.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии