C/C++の変数と配列

沖林正紀
2008/03/11 08:00

前回、入力の書式について紹介したときに、変数について説明できていなかった。そこで今回は変数と、それに関係する定数の記述について紹介したい。

配列とは

 配列(はいれつ)とは、同じデータ型の値を複数持つことが可能な変数のことで、これまでa[14]などと記述していたものがそれである。つまりchar a[14]とは、char型の値を14個持つことができるaという名前の配列ということになる。

 配列に収められているそれぞれの値を要素(ようそ)といい、a[10]で宣言されている配列はa[0]からa[9]までの要素を保持することができる。このとき[0]や[9]の部分を添え字(suffix)という。

定数とその記述

 定数(ていすう)とは、1、2といった数値や、”Hello!”のような文字列など、定まった値を持つデータをいう。これを記述するにも、実はきまりがある。その決まりには、文字に関するものと数値に関するものとがある。ここからはそれらを紹介したい。

数値の定数

 数値の定数は、結果として同じ数を表すにしても、10進数、16進数、8進数による記述が可能だ。このきまりはPHPなど他のプログラム言語でも共通している。

  • 10進数 100
  • 16進数 0x64 (先頭に0xをつける)
  • 8進数 0144 (先頭に0をつける)

文字に関する定数

 C/C++で扱うことができる文字に関する定数には、文字定数と文字列がある。文字定数は、記述の上では文字だが、実際には文字コードという数値を表しており、一般にはchar型で表される。これは両端を''(一重引用符)で囲む。文字列は、文字定数が複数連なった集合でリテラル(literal)とも呼ばれる。こちらは両端を""(二重引用符)で囲む。"123"のように、数値を""で囲んだものも文字列として扱われる。

  • 文字定数の例 - 'a', '\n' など (書式は%c)
  • 文字列の例 - "Hello!", "123" など

 文字定数は通常は1文字で表されるが、制御文字と呼ばれる一部の文字コードは、\を用いたエスケープ列で記述する。

エスケープ列の例
制御文字\t(水平タブ、ASCIIコード9), \n(改行、ASCIIコード10), \r(復帰、ASCIIコード13) など
\自身\\
引用符\',\"
8進数で表す文字定数\141 など
16進数で表す文字定数\x61 など
ヌル(NUL)文字\0

文字列と配列との関係

 これまで述べてきたことから、 char a[14] = "Hello, World!"; は、char型の配列に文字列を代入していることを表すのがおわかりだろうか。しかも[14]では代入される文字数よりも配列の要素が1つ多い。なぜだろうか。

 それは、文字列の末尾には必ず'\0'が付属することになっているからだ。つまり"Hello, World!"は、'H'、'e'……'d'、'!'、'\0'という文字定数の集合で表されているということだ。

 次回は、配列についてもう少し説明を加えたい。

  • コメント(2件)

#1 chaos  - 2008/03/29 23:35:04

代入と初期化は、ちがうものだとおもうのですが...
» 不適切なコメントを報告する

#2 Jitta  - 2008/03/30 22:24:38

「ここでchar a[14]は、char型の半角13文字分のデータ(文字列)を保持... 続きを見る
» 不適切なコメントを報告する
記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
米フォレスター・リサーチ社 シニアアナリスト Jeremiah K.Owyang氏を迎え、同氏が提唱するソーシャルテクノロジーを効果的に活用方法するための方法『POST』を日本で初めて紹介する注目のリアルイベント
  • 今日のトップ記事
  • 昨日
  • 2日前
  • 5日前
  • 6日前
  • 7日前
  • 新着記事
  • 人気記事
  • 特集
  • ブログ