C/C++の配列の宣言と要素の表し方
配列は、同じ名前で複数の値を持つことができる変数であることは既に説明したが、今回は配列についてもう少し詳しく説明していきたい。
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言語ではそうはならない。そのため、添え字の値が宣言の範囲内にあるかどうかは開発者が責任を持たなくてはならない。どうしても不安ならコード解析ツールを使う方法もあるが、いずれにせよ、添え字の値についてエラーなどで知らせてくれるわけではないことを頭に入れておきたい。
- 特集: C/C++のイロハ:メモリ管理からオブジェクト指向まで (15件)
- ホワイトペーパー
- 話題のタグ
グーグル、JavaScriptプログラミングツールをリリース
Windowsの歴史 Windows Server 2008編:同じカーネルを持つ「Vista」とは対照的に早くから支持を得たサーバOS
Windowsの歴史 Windows Server 2003 R2編:安定性と先進性の両立目指す「R2」の先駆けとなったOS
モジラ、「Firefox 3.6」の第1ベータ版をリリース
進むストレージ環境の見直し
最大32個のセンサーが電力を徹底管理!
企業ITシステムの企画、構築、運用のイロハ
【最終警告】パンデミック対策特集
―エン・ジャパン厳選求人☆毎週更新―
大丈夫?あなたの会社のセキュリティ対策
100万円で実現!中小企業の情報漏えい対策