配列型
読み:はいれつがた

 あるデータ型を、複数束ねて扱うようなデータ型のこと。構造化型の一つ。
目次

概要
 概念的には「仕切りのある箱」である。
 箱は仕切りがあるため複数のものを入れることができる。

特徴

C/C++
 C/C++では、変数などの定義時にその要素数を書くことで、配列とする。
 int hoge[3];
 hoge[0] = 100;
 hoge[1] = 200;
 hoge[2] = 300;
 C/C++では、[3]として定義すると3個が確保され、実際には[0]〜[2]までが利用できる。
 誤って[3]に書き込むとバッファーオーバーフローとなるので注意が必要だが、このように配列の宣言外にアクセスしてもエラーにならない点がC/C++の厄介な問題である。
 範囲外にアクセスしたら例外が飛ぶか、エラーになる事が保障されていれば、バグも大幅に減り、セキュリティ上の問題の数も大幅に減っていたと見込まれるが、そのような仕様にはならなかった。

Java
 Javaでは、配列型を扱うための変数は「参照型」である。
 C/C++と同等の配列型変数はJavaにはない。参照型は、基本型(基本のデータ型)を配列として定義したオブジェクトに対する参照を格納することができる変数である。これは、C/C++でmallocなどで確保したメモリーをポインター変数で扱うのと似ている。
 int[] hoge = new int[3];
 hoge[0] = 100;
 hoge[1] = 200;
 hoge[2] = 300;
 ここではオブジェクトを3個分定義しているため、実際には[0]〜[2]までが利用できる。
 オブジェクトの個数は変数名に .length をつけたもの、この場合は hoge.length で取得することができる。
 範囲外のインデックス(この場合は4以上)を使用して配列を参照した場合、ArrayIndexOutOfBoundsException 例外が発生する。

Pascal/Delphi
 Pascalでは、専用の構文を使って宣言する。
 var 変数名: array[添え字の範囲] of データ型;
 例えば、次のようにする。
 var Hoge: array[1..3] of Integer;
 Hoge[1] := 100;
 Hoge[2] := 200;
 Hoge[3] := 300;

再検索