こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

2次元配列とポインタ

char str1[][6]={"one","two","three","four","five"};
char *pt1;

pt1 = str1; //(1)

上記の記述では(1)で型エラーが発生します。
ここを

pt1 = *str1; //(2)

と変更するとOKになるのですが、
(1)にすれば配列名だけでstr1先頭のアドレスがポインタpt1にセット
されると思うのですが、なぜダメなのでしょうか?

投稿日時 - 2009-01-29 18:16:45

QNo.4671750

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>上記の記述では(1)で型エラーが発生します。

そりゃそうですね。
pt1の型はchar *
str1の型はchar (*)[6]
で、異なりますから。

投稿日時 - 2009-01-29 20:59:08

お礼

ありがとうございます。

投稿日時 - 2009-02-06 21:53:53

ANo.1

どうして
pt1 = str1; //(1)
をしたいのかを明示しましょう

str1 と 右辺に記述した場合 char[5][6]と解釈されるので char*とは互換がありません

無理やりやるなら
pt1 = (char*)str1;
といった具合でしょうか ・・・

*str1 と右辺に記述すると str1[0]の中身つまり char[6]になるので char*の変換も可能です

投稿日時 - 2009-01-29 18:43:55

お礼

ありがとうございます。

投稿日時 - 2009-02-06 21:55:28