Рубрики

Викторина С — 110 | Вопрос 5

В C 1D массив int может быть определен следующим образом, и оба являются правильными.

int array1D[4] = {1,2,3,4};

int array1D[] = {1,2,3,4};

Но учитывая следующие определения (наряду с инициализацией) 2D массивов

int array2D[2][4] = {1,2,3,4,5,6,7,8}; / * (i) * /

int array2D[][4] = {1,2,3,4,5,6,7,8}; / * (ii) * /

int array2D[2][] = {1,2,3,4,5,6,7,8}; / * (iii) * /

int array2D[][] = {1,2,3,4,5,6,7,8}; / * (iv) * /

Выберите правильные утверждения.
(A) Только (I) является правильным.
(B) Только (i) и (ii) являются правильными.
(C) Только (i), (ii) и (iii) являются правильными.
(D) Все (i), (ii), (iii) и (iv) являются правильными.

Ответ: (Б)
Объяснение: Прежде всего, язык C не обеспечивает никакой реальной поддержки 2D-массивов или многомерных массивов. Двумерный массив моделируется с помощью одномерного массива. Таким образом, двумерный массив int на самом деле является одномерным массивом массивов int. Другим важным моментом является то, что размер массива может быть получен из его инициализации, но это применимо только для первого измерения. Это означает, что двумерный массив должен иметь явный размер второго измерения. Аналогично, для трехмерного массива 2-е и 3-е измерения должны иметь явный размер. Вот почему только (I) и (II) являются правильными. Но array2D [2] [] и array2D [] [] имеют неполный тип, потому что их полный размер не может быть получен даже при инициализации.
Тест на этот вопрос

Рекомендуемые посты:

Викторина С — 110 | Вопрос 5

0.00 (0%) 0 votes