netlib.narod.ru | < Назад | Оглавление | Далее > |
Все переменные, используемые в программе, должны быть объявлены до того, как они будут использоваться, хотя некоторые объявления могут быть получены неявно из контекста. Обявление задает тип и содержит список из одной или нескольких переменных этого типа, например:
int lower, upper, step; char c, line[1000];
Переменные можно распределять по объявлениям произвольным образом, так что указанные выше списки можно записать и в следующем виде:
int lower; int upper; int step; char c; char line[1000];
Последняя форма записи занимает больше места, но тем не менее она лучше, поскольку позволяет добавлять к каждому объявлению комментарий, облегчающий последующую модификацию кода.
В объявлении может быть сразу выполнена инициализация переменной. Для этого за именем переменной ставится знак равенства и инициализирующее выражение:
char esc = '\\'; int i = 0; int limit = MAXLINE+1; float eps = 1.0e-5;
Если переменная не является автоматической, ее инициализация осуществляется только один раз перед тем, как программа начнет выполняться, и в инициализирующем выражении должны быть только константы. Явно инициализируемая автоматическая переменная получает начальное значение каждый раз при входе в функцию или блок, и на инициализирующее выражение никаких ограничений не накладывается. Внешние и статические переменные по умолчанию получают нулевые значения. Автоматические переменные, которые не инициализируются явным образом, содержат неопределенные значения («мусор»).
К объявлению любой переменной может быть добавлен квалификатор const для указания того, что ее значение далее не будет изменяться. Применительно к массиву квалификатор const означает, что не будет меняться значение ни одного из элементов массива.
const double e = 2.71828182845905; const char msg[] = "Предупреждение: ";
Объявление const можно использовать и для массива, являющегося аргументом функции, чтобы сообщить, что функция не изменяет этот массив:
int strlen(const char []);
Реакция на попытку изменить переменную, помеченную квалификатором const, зависит от реализации компилятора.
netlib.narod.ru | < Назад | Оглавление | Далее > |