“数组声明”命名数组并指定其元素的类型。 它还可以定义数组中的元素数。 具有数组类型的变量被视为指向数组元素类型的指针。
语法
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-specifierdeclarator[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 专用