Поделиться через


Объявления массива

Объявление массива присваивает имя массива и задает тип его элементов. Он также может определить количество элементов в массиве. Переменная с типом массива считается указателем на тип элементов массива.

Синтаксис

declaration:
declaration-specifiers init-declarator-list выбирать;

init-declarator-list:
init-declarator
init-declarator-list , init-declarator

init-declarator:
declarator
declarator = initializer

declarator:
pointer выбиратьdirect-declarator

direct-declarator:
direct-declarator [ constant-expression выбирать]

Так как constant-expression является необязательным, синтаксис имеет две формы:

  • Первая форма определяет переменную массива. Аргумент constant-expression в скобках указывает количество элементов в массиве. Значение constant-expression, если присутствует, должно иметь целочисленный тип и значение больше нуля. Каждый элемент имеет тип, заданный type-specifier, который может быть любым типом, кроме void. Элемент массива не может быть типом функции.

  • Вторая форма объявляет переменную, определенную в другом месте. Он опустит constant-expression аргумент в квадратных скобках, но не квадратные скобки. Эту форму можно использовать только в том случае, если вы ранее инициализировали массив, объявили его в качестве параметра или объявили его ссылкой на массив, который явно определен в другом месте программы.

В обеих формах direct-declarator присваивает имя переменной и может изменять тип переменной. Квадратные скобки ([ ]) после direct-declarator изменения декларатора на тип массива.

Квалификаторы типов могут отображаться в объявлении объекта типа массива, но квалификаторы применяются к элементам, а не к самому массиву.

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

type-specifier declarator [ constant-expression ] [ constant-expression ] ...

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

Можно определить массивы указателей на различные типы объектов с помощью сложных деклараторов, как описано в разделе "Интерпретация более сложных деклараторов".

Массивы хранятся по строке. Например, следующий массив состоит из двух строк с тремя столбцами:

char A[2][3];

Три столбца первой строки хранятся в первую очередь, а затем три столбца второй строки. Это означает, что последний подстрок меняется быстрее.

Чтобы ссылаться на отдельный элемент массива, используйте выражение подстрока, как описано в операторах postfix.

Примеры

В этих примерах иллюстрируются объявления массива:

float matrix[10][15];

Двухмерный массив с именем matrix содержит 150 элементов, каждый из которых имеет float тип.

struct {
    float x, y;
} complex[100];

Этот пример представляет собой объявление массива структур. Этот массив содержит 100 элементов; каждый элемент — это структура, содержащая два элемента.

extern char *name[];

Эта инструкция объявляет тип и имя массива указателей charна . Фактическое name определение происходит в другом месте.

Специфично для Microsoft

Тип целочисленного числа, необходимого для хранения максимального размера массива, — это размер size_t.

Конец раздела, относящегося к Microsoft

См. также

Деклараторы и объявления переменных