配列の基本[編集]配列(はいれつ)とは、特定の型のオブジェクトの集合を連続して割り付けたものである。アクセスすることができる。配列を用いて次のように簡潔に書き換えることができる。添字が2つ以上の多次元の配列がある。1次元の配列[編集]1次元の配列の宣言[編集]1次元の配列の宣言の記述は次のようになっている。配列の要素数だけ要素の数を持った配列を宣言する。配列のデータ型と配列名は、変数の宣言と同様である。C言語/データ型と変数#データ型と変数の基本を参照せよ。配列の要素数は、配列の中の要素の数を表す。要素数は0より大きな整数でなければならない。int型3つ([0]~[2])の配列を宣言する。※図1}上の例では、int型でhairetsuという名前で3つの要素を持つ配列を宣言している。3つの要素は配列名のあとに[]に囲まれた添字と呼ばれる番号を付けて区別する。添字は[0]から順番に数え、[配列の要素数-1]までの整数である。hairetsu[0]、hairetsu[1]、hairetsu[2]というようになる。配列は、宣言と同時に、値のリストで初期化することもできる。初期化していないローカルな配列の値は不定であり、その値をそのまま参照してはならない。(値を代入した後になら参照してもよい。初期化の記述は次のようになっている。配列名[配列の要素数]={値のリスト};値のリストは、コンマで区切った定数のリストである。値のリストの定数で、対応する配列の要素の値を初期化する。※値のリストが配列の要素数より多い場合、コンパイルエラーとなる。※値のリストが配列の要素数より少ない場合、足りない要素は0で初期化される。※値のリストで初期化するのは、宣言時のみ可能。宣言後に初期化しようとすると、コンパイルエラーとなる。配列を宣言し初期化する。int型3つ([0]~[2])の配列を宣言し、1,2,3で初期化する。※図2}上の例では、hairetsu[0]が1、hairetsu[1]が2、hairetsu[2]が3でそれぞれ初期化されている。配列を値のリストで初期化する場合、要素数を省略できる。要素数を省略して、配列を宣言し初期化する。int型3つ([0]~[2])の配列を宣言し、1,2,3で初期化する。※図2}上の例では、値のリストの要素数で、配列の要素数が決まる。1次元の配列の代入[編集]1次元配列の代入の記述は次のようになっている。配列名[添字]=式;配列名が指す配列の[添字]番目の要素に、式の値を代入する。添字とは、アクセスする配列の要素を特定するものである。添字は[0]から順番に数え、[配列の要素数-1]までの整数である。int型3つ([0]~[2])の配列を宣言する。配列に数値を代入する。※図2}上の例では、hairetsu[0]に1、hairetsu[1]に2、hairetsu[2]に3をそれぞれ代入している。1次元の配列の参照[編集]1次元配列の参照の記述は次のようになっている。配列名[添字]配列名が指す配列の[添字]番目の要素を参照する。添字とは、アクセスする配列の要素を特定するものである。添字は[0]から順番に数え、[配列の要素数-1]までの整数である。int型3つ([0]~[2])の配列を宣言し、1,2,3で初期化する。配列の[1]と[2]の数値を参照し、配列の[0]にその和を代入する。その和をhairetsu[0]の要素に代入している。範囲外チェックをしません。範囲外にならないように、気をつけてください。次元の数だけ[配列の要素数]を追加する。次のように記述できる。多次元の配列を宣言する。hairetsu[3][4];}上の例では、次の表のように3行×4列の配列が確保される。hairetsu[2][3]実際には、次の表のような順番で配列がメモリ上に確保される。配列の宣言と同時に値のリストで初期化することができる。1つ左の次元へ繰り上がる。多次元の配列を宣言し初期化する。hairetsu[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};}上の例では、次の表のように、初期化される。1番左の次元の要素数は省略できる。要素数を省略して、多次元の配列を宣言し初期化する。次元の数だけ[添字]を追加する。多次元の配列に代入する。x+y*4;}上の例では、次の表のように、代入される。次元の数だけ[添字]を追加する。多次元の配列を参照する。hairetsu[y][x]);}printf("\n");}}配列全体のコピー[編集]配列全体をコピーする場合、各要素を1つずつコピーしなければならない。配列を1つずつコピーする。hairetsu1をhairetsu2にコピーする。}また、memcpy関数を用いることで、配列全体をコピーできる。memcpy関数を使用するためには、memory.hというヘッダファイルを組み込む必要がある。配列をまとめてコピーする。hairetsu1をhairetsu2にコピーする。表示-継承ライセンスのもとで利用できます。追加の条件が適用される場合があります。詳細については利用規約を参照してください。Cookieに関する声明モバイルビュ。