Все Лекции
.pdf
Глобальные переменные
•Глобальные переменные объявляются вне тела какой-либо из функций и действуют на протяжении выполнения всей программы.
•Такие переменные доступны в любой из функций программы, которая описана после объявления глобальной переменной.
•Отсюда следует, что имена локальных и глобальных переменных не должны совпадать.
•Если глобальная переменная не проинициализирована явным образом, она инициализируется значением 0.
31
Глобальные переменные
•Область действия глобальной переменной совпадает с областью видимости и простирается от точки её описания до конца файла, в котором она объявлена.
•Время жизни глобальной переменной – постоянное, то есть совпадает с временем выполнения программы.
•На практике программисты стараются избегать использования глобальных переменных и применяют их только в случае крайней необходимости.
32
Распределение памяти для переменных
•Все глобальные переменные распределяются в памяти статически.
•Локальные переменные размещаются в памяти динамически, при активизации подпрограммы их содержащей.
•После выполнения подпрограммы память, отведенная для локальных переменных, освобождается.
33
Распределение памяти для переменных
•В С++ существует четыре модификатора переменных, определяющих область видимости и время действия переменных.
Модификатор |
Применение |
Область |
Время жизни |
|
действия |
||||
|
|
|
||
|
|
|
|
|
auto |
локальное |
блок |
временное |
|
|
|
|
|
|
register |
локальное |
блок |
временное |
|
|
|
|
|
|
extern |
глобальное |
блок |
временное |
|
|
|
|
|
|
static |
локальное |
блок |
постоянное |
|
|
|
|||
глобальное |
файл |
|||
|
|
|||
|
|
|
|
|
volatile |
глобальное |
файл |
постоянное |
|
|
|
|
|
34
Область видимости переменных
•В языках Python и С/С++ допускается объявлять локальную переменную не только в начале функции, а вообще в любом месте программы.
•Если объявление происходит внутри какого-либо блока, переменная с таким же именем, объявленная вне тела блока, «прячется».
•Объявление локальной переменной скрывает глобальную переменную с таким же именем.
•Таким образом, все обращения к глобальной переменной в пределах области действия локального объявления вызывают обращение к локальной переменной.
35
Область видимости переменных
•Что делать, если потребуется вызвать функцию, которая должна выдать в результате несколько значений?
•В языке С/С++ для этого проще всего использовать так называемые функции типа void.
•Если обратится к функции типа void просто по имени и внутри нее пересчитать глобальные переменные, то после этого в основной программе значения глобальных переменных изменятся.
36
Область видимости переменных
•Переменная находится в области видимости, если к ней можно получить доступ.
•Это можно сделать с помощью операции разрешения видимости, в том случае, если она непосредственно не видима.
•В языке С++ можно обращаться к глобальной переменной из любого места программы с помощью оператора разрешения области видимости.
•Для этого перед именем переменной ставится префикс в виде двойного двоеточия (::).
37
Вопросы?
38
Информационные технологии
и программирование
Лекция 3. Разработка программных продуктов
Вопросы темы
•Введение в продуктовую
разработку
•Качество программного
обеспечения
•Современные тренды в разработке программного обеспечения
2
