#define HI “Hello”
#define PI 3.141593
Другой способ задания символических целочисленных констант – использование типа enum. Например, в результате следующего объявления
enum error { OK, NO_OPEN, NO_CREATE, FALL = 5 }
будут получены константы с указанными в списке именами и значениями 0, 1, 2 и 5 соответственно.
Время существования, или время жизни переменной, измеряется длительностью ее существования в программе:
· локальное время жизни – это время существования переменной при выполнении блока, в котором она объявлена (блок – это часть кода программы, заключенная в фигурные скобки);
· глобальное время жизни – это время существования переменной при выполнении всей программы.
Область видимости – это часть кода программы, в которой идентификатор может быть использован для доступа к переменной. Область видимости может быть определена
· до конца блока, в котором объявлена переменная;
· до конца файла, в котором объявлена переменная.
Управлять временем существования и областью видимости переменных можно с помощью модификаторов класса памяти auto, register, static, extern.
Автоматическая (auto) переменная или константа имеет локальную область действия и известна только внутри блока, в котором она определена. Для автоматической переменной выделяется временная память. Память выделяется при входе в блок, а при выходе из блока память, выделенная для переменной, считается свободной, т.е. переменная уничтожается. Если спецификатор класса памяти не указан, то переменная в блоке по умолчанию считается автоматической.
Регистровая (register) переменная хранится в регистре процессора. В случае отсутствия свободных регистров регистровая переменная становится автоматической.
Статической (static) переменной (константе) память выделяется после ее объявления и сохраняется до конца выполнения программы. Статические переменые при объявлениии по умолчанию инициализируются нулевыми (логические, целые и вещественные) или пустыми значениями. Статическая переменная не создается и не разрушается автоматически при вызове функции. Ей отводится элемент хранения в сегменте данных. Значение этой переменной между вызовами функции сохраняется, но другие функции не имеют доступа к статической переменной, описанной внутри функции.
Внешняя (extern) переменная является глобальной переменной. Спецификатор информирует компилятор, что переменная будет объявлена (без extern) в другом модуле, где ей и будет выделена память.
// модуль ext.h
void GetFloat (); // прототип функции
// модуль ext.cpp
#include <iostream.h>
#include ”ext.h”
void GetFloat( ) // реализация функции
{
extern float f; // описание переменной f
cin >> f; //ввод значения переменной f
}
// модуль ext_main.cpp
#include <iostream.h>
#include ”ext.cpp”
float f ; //объявление переменной f и выделение памяти
void main()
{
Getfloat(); cout<<f;
}
В таблице 1.3 приведены характеристики переменных, объявленных с использованием модификатора выделения памяти.
Таблица 1.3 Характеристики переменных
Модификатор класса памяти |
Место объявления переменной |
Область видимости |
Время существования |
Характеристики |
не указан (по умолчанию) STATIC |
вне функции |
до конца файла |
глобальное |
глобальная переменная файла |
STATIC |
вне функции |
до конца файла |
глобальное |
глобальная переменная файла |
STATIC |
в функции |
до конца блока |
локальное |
сохраняемая локальная переменная |
не указан (по умолчанию AUTO) |
в функции |
до конца блока |
локальное |
локальная переменная |
AUTO |
запрещено вне функции |
|||
AUTO |
в функции |
до конца блока |
локальное |
локальная переменная |
REGISTER |
В функции |
до конца блока |
локальное |
быстрая локальная переменная |
REGISTER |
запрещено вне функции |
|||
EXTERN |
в функции |
до конца файла |
глобальное |
глобальная переменная программы |
EXTERN |
вне функции |
до конца файла |
глобальное |
глобальная переменная программы |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.