netlib.narod.ru< Назад | Оглавление | Далее >

2.4. Объявления

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

    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< Назад | Оглавление | Далее >

Сайт управляется системой uCoz