配列=ポインタ の例外

 配列名を添字無しで使うと,それは配列の先頭要素を指すポインタ定数となる,と書いたが,それにはいくつかの例外もある.次の3つがその例外である.

  1. sizeof (array) のように,sizeof 演算子に引き渡された場合,これは int 型でも,int 型ポインタでもなく,配列全体を指すものとなる.
  2. char array[] = "abcde"; のように,文字配列を文字列定数(リテラル)で初期化するとき.
  3. & array のように,アドレス演算子 & に引き渡された場合,array は配列全体を意味する.よって, & array は,長さ何々の何々型配列へのポインタとなる.

しかし,初めのうちは,以上のことを気にすることよりも,「配列に添字を付けなければ,配列の先頭要素を指すポインタになる」ということを理解することが大切である.