15 Структура программы на с++. Область видимости и время жизни переменной. Классы имен в с++.

Реальный программный проект разрабатывается как множество исходных файлов, которые компилируются отдельно, а затем объединяются редактором связей. Функции из разных файлов могут использовать глобально доступные внешние переменные. Сами функции обычно внешние и доступны из любых файлов.

[класс памяти][тип] Имя =[инициализатор]

Блоком в программе является последовательность объявлений или определений операторов, заключенных в {}

Сущ-т два типа блоков:

1)составной оператор;

2)определение функции.

Блоки могут включать в себя составные операторы, но не могут содержать определения функции, то есть внутри функции нельзя определить другую функцию

Время жизни переменной - интервал выполнения программы, в течение которого программный объект существует. Об-т с глобальным временем жизни имеет отведенную для него память на протяжении всего времени выполнения программы, объект с локальным временем жизни - в момент исполнения блока программы.

ф-ции в программе на с++ имеют  глобальное время жизни.

Область видимости - часть текста программы, в котором может быть использован данный об-т. Об-т считается видимым, если изв-ны его тип и имя. Об-т может быть видимым в пределах блока, файла или всей программы. Если об-т объявлен внутри блока, то он виден только внутри этого блока и блоков, вложенных в него. Если об-т объявлен на внешнем уровне, то он виден от точки объявления до конца данного файла. Об-т может быть сделан глобально видимым с помощью соответствующих объявлений в исходных файлах программы.

Правила определения времени жизни переменной:

1)переменная, объявленная вне блоков программы, имеет глобальное время жизни.

2)переменная, объявленная на внутреннем уровне (внутри блока) имеет локальное время жизни, если она не написана со static

Правила видимости переменных и функций:

1)Переменные, определенные на внешнем уровне, видимы от точки объявления до конца файла. Можно объявить переменные видимыми и в других исходных файлах, если объявить их с extern. Однако если переменные определены на внешнем уровне со static, они видимы только в том файле, в котором они определены.

2)Переменные, объявленные или определенные внутри блока, видимы от точки объявления до конца блока. Такие переменные наз-ся локальными.

3)Переменные из объемлющих блоков, включая переменные, объявленные на внешнем уровне, видимы во внутренних блоках. Если переменная, объявленная внутри блока, имеет то же имя, что и переменная, объявленная на объемлющем блоке, то определение переменной в блоке заменяет внешнюю переменную. Видимость функций объемлющего уровня восстанавливается при выходе из блока.

4)Функции с классом памяти static видимы только в том файле, в котором они определены. Все остальные функции являются глобально видимыми, однако для их использования необходимо использовать прототипы. Метки функций видны на протяжении всей функции. Имена формальных параметров функции видны от точки объявления до конца объявления функции.

Классы имен:

struct FIO

{

 char FIO[100];

 char Addr [100];

} FIO;

FIO F1; // тип данных структуры FIO

FIO.FIO[1]; // переменная FIO

 

Hosted by uCoz