Язык С


         

Последнее сокращение допускает возможность инициализации


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

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[1] и Y[2]. Инициализатор заканчивается преждевременно, и, следовательно массив Y[3] инициализируется нулями. В точности такого же эффекта можно было бы достичь, написав

FLOAT Y[4][3] = \( 1, 3, 5, 2, 4, 6, 3, 5, 7 \);

Инициализатор для Y начинается с левой фигурной скобки, но инициализатора для Y[0] нет. Поэтому используется 3 элемента из списка. Аналогично следующие три элемента используются последовательно для Y[1] и Y[2]. следующее описание

FLOAT Y[4][3] = \( (1), (2), (3), (4) \);

инициализирует первый столбец Y (если его рассматривать как двумерный массив), а остальные элементы заполняются нулями. И наконец, описание

CHAR MSG[] = "SYNTAX ERROR ON LINE %S\N";

демонстрирует инициализацию элементов символьного массива с помощью строки.




    Содержание  Назад  Вперед