Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация.docx
Скачиваний:
9
Добавлен:
21.11.2019
Размер:
59.12 Кб
Скачать

57. Ссылки. Понятие и _____

Ссылка представляет собой альтернативное имя объекта. Тип ссылки определяется спецификацией типа, за которой следует операция &. Так же, как и константа, ссылка при определении должна быть инициализирована некоторым существующим объектом:

int i = 10;

int &j = i;

j теперь будет другим именем для i. Ссылка иногда также называется псевдонимом. Любые действия с объектом могут теперь производиться как с использованием основного имени, так и с использованием ссылки.

Для инициализации ссылки необходимо, чтобы инициализирующий объект нужного типа находился в памяти (был lvalue).

Нельзя определять массив ссылок:

int &a[10]; // ошибка

Нет константных ссылок, однако существуют ссылки на константный объект. Через ссылку на константный объект нельзя менять сам объект:

int i = 100;

const int &ciref = i;

ciref = 200; // ошибка

Ссылку на константный объект можно инициализировать константой и объектом не ее типа.

58. Глобальные, локальные, статические локальные и внешние переменные

По зоне видимости различают локальные и глобальные переменные. Первые доступны только конкретной подпрограмме, вторые — всей программе. Глобальные переменные видны во всех подпрограммах, где нет локальных переменных с теми же именами.

Статические локальные переменные

На физическом уровне локальные переменные представлены во временной области памяти соответствующей функции. Существует способ расположить переменную, объявленную внутри функции, в постоянной памяти программы. Для этого при объявлении переменной перед типом переменной необходимо указать модификатор static:

static int Number; // Статическая переменная целого типа

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

Внешняя переменная - это переменная, значение которой доступно из окна свойств программы. Внешняя переменная объявляется за пределами всех функций и является глобальной, область её видимости - вся программа. При объявлении внешней переменной перед типом её значения необходимо указать модификатор extern:

extern int Number; // Внешняя переменная целого типа

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