"配列宣言" は、配列に名前を付け、その要素の型を指定します。 また、配列内の要素の数を定義することもできます。 配列型を持つ変数は、配列要素の型へのポインターと見なされます。
構文
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は省略可能であるため、構文には次の 2 つの形式があります。
最初のフォームは配列変数を定義します。 角かっこ内の
constant-expression引数は、配列内の要素の数を指定します。constant-expressionが存在する場合は、整数型と 0 より大きい値が必要です。 各要素には、type-specifierによって指定された型があり、voidを除く任意の型にすることができます。 配列要素を関数型にすることはできません。2 番目のフォームは、他の場所で定義されている変数を宣言します。
constant-expression引数は角かっこで囲んで省略しますが、角かっこは省略しません。 このフォームは、以前に配列を初期化した場合、パラメーターとして宣言した場合、またはプログラム内の他の場所で明示的に定義されている配列への参照として宣言した場合にのみ使用できます。
どちらの形式でも、 direct-declarator 変数に名前を付け、変数の型を変更できます。 次の角かっこ ([ ]) direct-declarator 、宣言子を配列型に変更します。
型修飾子は配列型のオブジェクトの宣言で使用できますが、修飾子は配列自体ではなく要素に適用されます。
この形式の角かっこで囲まれた定数式の一覧を持つ配列宣言子に従うことで、配列の配列 ("多次元" 配列) を宣言できます。
type-specifierdeclarator[constant-expression][constant-expression]...
角かっこ内の各 constant-expression は、特定の次元の要素の数を定義します。2 次元配列には 2 つの角かっこで囲まれた式があり、3 次元配列には 3 つがあります。 配列を初期化した場合、パラメーターとして宣言した場合、またはプログラム内の別の場所で明示的に定義された配列への参照として宣言した場合は、最初の定数式を省略できます。
「より複雑な宣言子の解釈」の説明に従って、複合宣言子を使用して、さまざまな種類のオブジェクトへのポインターの配列を定義できます。
配列は行ごとに格納されます。 たとえば、次の配列は、それぞれ 3 つの列を持つ 2 つの行で構成されます。
char A[2][3];
最初の行の 3 つの列が最初に格納され、次に 2 番目の行の 3 つの列が格納されます。 これは、最後の添字が最も早く変化することを意味します。
配列の個々の要素を参照するには、「 後置演算子」の説明に従って添字式を使用します。
例示
次の例は、配列宣言を示しています。
float matrix[10][15];
matrixという名前の 2 次元配列には 150 個の要素があり、それぞれにfloat型があります。
struct {
float x, y;
} complex[100];
この例は、構造体の配列の宣言です。 この配列には 100 個の要素があります。各要素は、2 つのメンバーを含む構造体です。
extern char *name[];
このステートメントは、 charへのポインターの配列の型と名前を宣言します。
nameの実際の定義は、他の場所で行われます。
Microsoft 固有の仕様
配列の最大サイズを保持するために必要な整数の型は、 size_tのサイズです。
Microsoft 固有の仕様はここまで