• ベストアンサー

配列とポインタの関係

配列とポインタについてです。 char *p_str="HAPPY";と char p_str[10]={'H','A','P','P','Y'}; は同じことでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hegemon
  • ベストアンサー率72% (21/29)
回答No.2

C/C++での文字列は、最後に終端をあらわす'\0'が付きます。 なので、メモリ上の配置が同じレイアウトになるのは下記のように書いた場合です。 char p_str[10]={'H','A','P','P','Y','\0'}; しかし、この場合も実際に生成されるコードは違う場合があります。 char *p_str="HAPPY"; この場合の"HAPPY"はリテラル文字列と呼ばれ、処理系によっては書き込みが禁止されたメモリ領域に配置されます。 一方、配列のほうは普通の変数と同じ形式で配置され、書き換えが可能です。

tomo_ko_n
質問者

お礼

ありがとうございます。 リテラル調べてみます。

その他の回答 (1)

回答No.1

違います。

専門家に質問してみよう