[773] Re:ポインタ完全制覇
投稿者:yuya
2007/02/20 02:13:25
頭の整理のために、ということで。
A1'. char(*)[10] はchar配列(要素数10)へのポインタ。
char*[10] はcharへのポインタの配列(要素数10)。
A1". char (*hoge)[10];
Q3. 暗黙の変換前は 「charの配列(要素数10)の配列(要素数5)」型であり、
b[0]~b[4]の5つ(配列が5つ)のこと。
暗黙の変換後はその先頭要素へのポインタになるので、
「charの配列(要素数10)へのポインタ」型の右辺値となり、
そのポイント先はb[0]です。
「b + 1」はb[1]を、つまり10バイト離れたところをポイントします。
Q4. &bの「b」は暗黙の変換が行なわれないので、
配列そのもの(この場合は「配列の配列」という配列そのもの)になり、
それに「&」を付けた「&b」は「charの配列の配列へのポインタ」型の右辺値です。
「&b」のポイント先は「50バイト分のヒトカタマリ」であって、
「&b + 1」はもはや配列外をポイントするので、
ここを書き換えると何が起こるか分かりません。それこそ
>「配列へのポインタ」で示される先に実体が1つあるだけ
という状態ですね。