Re: typedefと関数ポインタ
"Hyu-ga Hiroya" <ingram@os.rim.or.jp> wrote in message
news:20031126235045.C43D.INGRAM@os.rim.or.jp...
> char (*c)[5];
> char c5[5] = {'a', 'b', 'c', 'd', '\0'};
> char c6[6] = {'1', '2', '3', '4', '5', '\0'};
>
> c = &c5;
> は正しいですが、
> c = &c6;
> はできませんね。
> c = c5;
> もできないですね。
> 配列の先頭要素のアドレスと、
> 配列そのもののアドレス(?)は違うものみたいですね。
> いまいちよくわからないです。
char (*c)[5]とc5やc6では型が違うので、c = c5やc = &c6がうまく行かないのは当
然のような気がします。
単純なケースとして
char * cc;
char c5[5] = {'a', 'b', 'c', 'd', '\0'};
とした場合、
cc = &c5; //間違い
cc = &c5[0]; //正しい
cc = c5; //正しい
になると思います。&c5[0]とc5は、同じ意味ですが、&c5は違う型を指すからです・
・かな。
上の例の
char (*c)[5];
char c5[5] = {'a', 'b', 'c', 'd', '\0'};
場合で、
c = &c5;
とした時、cを用いて、c5[]の中身の 'a', 'b', 'c', 'd'を1つずつ表示さすには、
どうすればよいか考えればその違いが分かるようになのではと思いますが。
--
******************************
keizi kounoike
******************************
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735