- 締切済み
2次元配列とポインタ
char str1[][6]={"one","two","three","four","five"}; char *pt1; pt1 = str1; //(1) 上記の記述では(1)で型エラーが発生します。 ここを pt1 = *str1; //(2) と変更するとOKになるのですが、 (1)にすれば配列名だけでstr1先頭のアドレスがポインタpt1にセット されると思うのですが、なぜダメなのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.2
>上記の記述では(1)で型エラーが発生します。 そりゃそうですね。 pt1の型はchar * str1の型はchar (*)[6] で、異なりますから。
- redfox63
- ベストアンサー率71% (1325/1856)
回答No.1
どうして pt1 = str1; //(1) をしたいのかを明示しましょう str1 と 右辺に記述した場合 char[5][6]と解釈されるので char*とは互換がありません 無理やりやるなら pt1 = (char*)str1; といった具合でしょうか ・・・ *str1 と右辺に記述すると str1[0]の中身つまり char[6]になるので char*の変換も可能です
質問者
お礼
ありがとうございます。
お礼
ありがとうございます。