09/12/31 14:03:57
>>130 >>131
お返事が遅れてしまいましたが、回答ありがとうございました。
なるほど a も &c も配列のポインタのポインタをとっても
結局は配列の一次(?)のポインタとして扱われるということなんですね。
1 : char (*a)[5];
2 : char c[5] = "abcd";
3 : a = c; // NG(以下、この行は無視してコンパイル成功したものとする)
4 : a = &c; // OK
5 : printf("a : %d , *a : %d , c : %d , &c : %d\n", a, *a, c, &c); // 全部一致する
6 : printf("a[1] : %c , (*a)[1] : %c , c[1] : %c\n", a[1], (*a)[1], c[1]); // a[1] はうまくいかない
くどいですが、実験してみたら上記のようになりました。
"[]"を単にアドレスから値を取得する演算子だと理解していたのですが、
かなり甘かったようです・・・。