Операционная система UNIX. Руководство программиста


Инициализация - часть 2


Наконец, еще одно сокращение позволяет инициализировать массив символов текстовой константой. В этом случае последовательные символы текстовой константы становятся начальными значениями элементов массива.

Например, конструкция

int x [] = {1, 3, 5};

описывает и инициализирует x как одномерный массив из трех элементов, поскольку размер массива не специфицирован и имеется список из трех выражений. Запись

float y [4] [3] = { {1, 3, 5}, {2, 4, 6}, {3, 5, 7}, };

- это инициализация с полным набором скобок; 1, 3 и 5 инициализируют первую строку массива y[0], а именно элементы y[0][0], y[0][1] и y[0][2]. Аналогично инициализируются две следующие строки. Инициализатор преждевременно заканчивается, поэтому y[3] инициализируется нулями. В точности тот же результат можно было бы получить при помощи инициализации

float y [4] [3] = { 1, 3, 5, 2, 4, 6, 3, 5, 7, };

Здесь список_инициализаторов записан без внутренних скобок, поэтому для инициализации первой строки массива будут взяты три первых элемента списка. Аналогично, следующие три берутся для y[1] и затем для y[2]. Запись

float y[4][3] = { {1}, {2}, {3}, {4} };

инициализирует первый столбец y (считающегося двумерным массивом) и заполняет все остальное нулями.

Наконец, запись

char msg [] = "Syntax error on line %s\n";

описывает символьный массив, элементы которого инициализируются при помощи текстовой константы. В текстовую константу (ее длина совпадает с размером массива) входит и заключительный символ NUL, \0.




Начало  Назад  Вперед



Книжный магазин