配列

配列 とは、メモリー内で連続して割り振られた、同じデータ型のオブジェク トの集合です。配列内の個々のオブジェクトは エレメント と呼ばれ、 それらは、配列内のそれぞれの位置によってアクセスされます。 サブスクリプト演算子 ([]) は、配列エレメントへの指標を作成する方法を提供します。このアクセス方式は、指標方式 また は添え字方式 と呼ばれます。 配列では、各エレメントに実行されるステートメント群をループに入れて、そのル ープを配列内の各エレメントに繰り返すようにできるので、反復タスクのコーディングが容易になります。

C および C++ 言語には、個々のエレメントの読み取りおよび書き込みができる、配列型用の限定された組み込みサポートがあります。 ある配列を別の配列に代入したり、2 つの配列を比較して等価であるかどうか調べたり、自己認識サイズを返したりする操作は、いずれの言語でもサポートされていません。

配列型はエレメントの型から派生し、このことは、配列型派生 と呼ばれます。 配列オブジェクトが不完全型の場合、配列型も不完全と見なされます。 配列エレメントは、void 型にも関数型にもすることができま せん。ただし、関数を指すポインター配列は許可されます。C++ 配列エレメントは参照型 にも抽象クラス型にもすることができません。

配列宣言子には、ID と、その後に続く、オプションの添え字宣言子 が 含まれています。アスタリスク (*) が前に付く ID は、ポインターの配列です。

構文図を読む構文図をスキップする
 配列添え字宣言子の構文 

   .---------------------------.   
   V                           |   
>>---[--constant_expression--]-+-------------------------------><

constant_expression は 定数整数式であって、配列のサイズを示し、正でなければなりません。

サブスクリプト宣言子は、配列の次元の数と各次元のエレメントの数を 記述します。大括弧で囲まれた式、または添え字は、別の次元を表します。 これらは、定数式でなければなりません。

次の例では、char 型が指定された 4 つのエレメントを 含む 1 次元配列を定義します。
char list[4];
各次元の 1 番目の添え字は、0 です。配列 list には以下のエレメントが 含まれます。
list[0]
list[1]
list[2]
list[3]
次の例では、int 型の 6 つのエレメントを 含む 2 次配列を定義します。
int roster[3][2];
多次元配列は、行方向優先順序で保管されます。 エレメントが、保管場所の昇順で参照される場合、一番後の添え字が一番先に変わります。 例えば、配列 roster のエレメントは、以下の順序で保管されます。
roster[0][0]
roster[0][1]
roster[1][0]
roster[1][1]
roster[2][0]
roster[2][1]
以下の場合には、最初の (最初のみ) 添え字の大括弧のセットを 空にしたままにすることができます。

最初のサブスクリプトの大括弧のセットを空にした配列定義では、初期化指定子が最初の次元のエレメントの数を 決めます。1 次元配列では、初期化されたエレメントの数が、エレメントの合計数になります。多次元配列は、 初期化指定子をサブスクリプト宣言子と比較し、第 1 次元のエレメントの数を決めます。

関連情報