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件)
6月18日(水)開催。無料でご参加いただけます(事前登録が必要です)。
- 今日のトップ記事
- 2日前
- 3日前
- 4日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
Firefox 3が対応したdisplayプロパティの値(3) - inline-table
MSもアドビも学生さんに開発ソフトを無償提供
「Economist」のトップページがリニューアル
あなたがプログラムを理解できない10の理由:第2回
新APIまもなく登場--Google Developer Day 2008の見所とは?
仮想化によるコスト削減を見える化:オンラインTCOカリキュレータ
-Simplify IT- ITをシンプルに 連載第2回
リスティング広告における競争優位性の維持
内部統制対策を実現するIT運用管理ツール