• 締切済み

2次元配列とポインタ

char str1[][6]={"one","two","three","four","five"}; char *pt1; pt1 = str1; //(1) 上記の記述では(1)で型エラーが発生します。 ここを pt1 = *str1; //(2) と変更するとOKになるのですが、 (1)にすれば配列名だけでstr1先頭のアドレスがポインタpt1にセット されると思うのですが、なぜダメなのでしょうか?

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>上記の記述では(1)で型エラーが発生します。 そりゃそうですね。 pt1の型はchar * str1の型はchar (*)[6] で、異なりますから。

02160315
質問者

お礼

ありがとうございます。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

どうして pt1 = str1; //(1) をしたいのかを明示しましょう str1 と 右辺に記述した場合 char[5][6]と解釈されるので char*とは互換がありません 無理やりやるなら pt1 = (char*)str1; といった具合でしょうか ・・・ *str1 と右辺に記述すると str1[0]の中身つまり char[6]になるので char*の変換も可能です

02160315
質問者

お礼

ありがとうございます。

関連するQ&A