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

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

char型以外の配列

 前回のC/C++の変数と配列では、文字列データを保持するためにchar型の配列を用いたが、それ以外のデータ型での配列はどのように記述されるのだろうか。int型の要素を持つ配列nを宣言(初期設定)する例を以下に示す。

  a. int n[ 5 ];  /* 変数名と要素の数のみを宣言 */
  b. int n[ 5 ] = { 7, 3, 5, 9, 2 }; /* あらかじめ要素を宣言 */
  c. int n[] = { 7, 3, 5, 9, 2 };    /* 要素の数が分かるときは宣言から省略可 */

 a.は配列の要素の数のみを宣言している。それぞれの要素は後から代入することになる。b.では事前に要素を設定しているので、これ以降で要素を自由に利用できる。c.はb.から要素の数を省略したもので、宣言の段階であればこのような記述も可能だ。しかもc.の場合は、設定する要素が変更されるときに要素の数を修正し忘れることがない。

 いずれの場合も、配列のそれぞれの要素のデータ型は必ず宣言時のものでなければならない。また、{...}で値を設定できるのは宣言時のみで、それ以降で同じ記述はできない。

    int n[ 5 ];
    /* このあとで n = { 7, 3, 5, 9, 2 }; などとはできない */

配列の要素の扱い

 たとえば n[ 5 ] の場合、配列に代入されたそれぞれの要素は n[ 0 ], n[ 1 ], ... n[ 4 ] までで表される。要素の数が5のとき、添え字は0から4までとなる。[ 0 ], [ 1 ] などで記述される部分を添え字(suffix)ということは前回にも述べた。

 配列の要素として値を代入するときは、n[ 2 ] = 5; のように、何番目の要素として右辺の値を代入するのかを添え字で記述すればよい。

 Javaなどの言語では、宣言した数を超える添え字の値を処理中に用いると、例外(java.lang.ArrayIndexOutOfBoundsException)やエラーとして知らせてくれるが、C言語ではそうはならない。そのため、添え字の値が宣言の範囲内にあるかどうかは開発者が責任を持たなくてはならない。どうしても不安ならコード解析ツールを使う方法もあるが、いずれにせよ、添え字の値についてエラーなどで知らせてくれるわけではないことを頭に入れておきたい。

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