C/C++の配列の宣言と要素の表し方

沖林正紀
2008-03-26 19:00:00
  • このエントリーをはてなブックマークに追加

多次元配列

 多次元というと、一般的には、平面ならX軸とY軸、立体ならこれにZ軸が加わるというように、同時に複数の軸を持つことをいう。

 配列において多次元とは何かというと、複数の添え字を持つことをいう。前述の n[ 5 ] のように添え字が1つの配列は1次元配列という。しかし n[ 5 ][ 4 ] のように2つの添え字を持つと2次元配列、 n[ 5 ][ 4 ][ 3 ] のように3つの添え字を持つと3次元配列となり、これらは多次元配列と呼ばれる。

 2次元配列を要素と共に宣言する場合は、以下のように記述する。

    int n[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } };

 配列の添え字と要素の数との対応に注目してみると、まず内側の { 1, 2, 3 } と { 4, 5, 6 } は、それぞれが3つの要素を持つ配列であることを表している。そして外側の {...} は、2つの要素を持つ配列であることを表している。

 つまり n[ 2 ][ 3 ] は、int型の要素を3つ持つ配列を2つの要素として持つ配列、ということになる。いわば配列を要素とする配列だ。文章にするとぎこちないが、2次元配列の要素を表1のような形式で眺めてみると、 n[ 0 ][ 0 ] = 1、 n[ 1 ][ 2 ] = 6 であることがわかるだろう。

表1 n[ 2 ][ 3 ]の要素
 後の添え字の値012
前の添え字の値0123
1456

 これまで述べてきたことは、double型など残りのデータ型でも基本的に同じだ。

文字列の多次元配列

 ここで再びchar型の配列に戻りたい。多次元配列はどのように記述すればよいのだろう。以下に例を示す。

    char lang[ 3 ][ 10 ] = { "Japanese", "English", "French" };

 ここでも添え字と要素の数との対応に注目したい。char型の配列では、最後の要素が'\0'であるため、添え字の数-1が文字列の実質的な最大の文字数となる。そうすると、 lang[ 3 ][ 10 ] は、3つの要素が最大9文字の文字列である配列ということになる。

 このとき、それぞれの要素の値は lang[ 0 ] = "Japanese" 、 lang[ 1 ] = "English" 、 lang[ 2 ] = "French" となっている。このあたりはint型などの配列とは異なるところだ。もちろん lang[ 0 ][ 0 ] = 'J' 、 lang[ 1 ][ 2 ] = 'g' というように、個別のchar型の要素でそれぞれの文字を表すこともできる。

配列が必要な理由

 通常の変数でデータを表すことができるのに、なぜ配列というのもが必要なのだろうか。それは、複数のデータを取り替えながら同じ処理を行うことが、プログラミングの場面でよくあるからだ。

 たとえば注文された商品の価格を合計するときに、各商品ごとにitem1, item2などと変数を宣言するのは面倒だ。注文される商品の数は一定ではないし、データの数が膨大になったら、もう途方にくれるしかないだろう。

 配列なら、添え字を変えれば個別のデータを表すことができるので、価格を合計するといった、何度も同じ処理をするには都合が良いのだ。プログラミングを理解するにつれて、配列が必要な理由をより強く認識できるようになるはずだ。

 次回は、C/C++言語の特徴的な機能であるポインタを紹介したい。これは配列とも深い関係がある。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]