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件)
- 今日のトップ記事
- 昨日
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
「Google Chrome」の拡張機能、開発者からのアップロード受付を開始
IMAPでGmailを受信、最も手っ取り早いのは?Windows 7、Ubuntu 9.10、Snow Leopardのメーラー比較
Snow LeopardではNTFSをサポート--その源流を訪ねる(2)
MS運営のオープンソース開発プロジェクト支援サイト「CodePlex」を探検する(2)
Snow LeopardではNTFSをサポート--その源流を訪ねる(1)
フォトレポート:「Windows Server 2008 R2」--あまり知られていない有用な機能10選
高まるiSCSIストレージへの注目度
電力に"ふた"をする独自の省エネ機能とは!?
企業ITシステムの企画、構築、運用のイロハ
100万円で実現!中小企業の情報漏えい対策
大丈夫?あなたの会社のセキュリティ対策
―エン・ジャパン厳選求人☆毎週更新―
【最終警告】パンデミック対策特集