配列=ポインタ の例外
配列名を添字無しで使うと,それは配列の先頭要素を指すポインタ定数となる,と書いたが,それにはいくつかの例外もある.次の3つがその例外である.
- sizeof (array) のように,sizeof 演算子に引き渡された場合,これは int 型でも,int 型ポインタでもなく,配列全体を指すものとなる.
- char array[] = "abcde"; のように,文字配列を文字列定数(リテラル)で初期化するとき.
- & array のように,アドレス演算子 & に引き渡された場合,array は配列全体を意味する.よって, &
array は,長さ何々の何々型配列へのポインタとなる.
しかし,初めのうちは,以上のことを気にすることよりも,「配列に添字を付けなければ,配列の先頭要素を指すポインタになる」ということを理解することが大切である.