• ベストアンサー

C言語のchar ポインタ

char ポインタで分からないことがあるのですが・・↓ ------ { char array[7]; char *ptr; strcpy(array, "abcdef"); ptr = &(array[0]); printf(" array = %s\n ptr = %s\n", array, ptr); } ------ これを実行して, array = abcdef になるのは分かるのですが ptr = abcdef  になるのはどうしてでしょうか。 ポインタはアドレスを指し示すものですよね。だったら ptr = にはarray[0]のアドレス('a'のアドレス)が入るのでは 無いんでしょうか・・?

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

  • ベストアンサー
  • KOH_da
  • ベストアンサー率31% (161/506)
回答No.1

printf関数の書式指定で「%s」が使われています。 この「%s」は、そのアドレスから始まる文字列を意味します。 よって、文字列が表示されています。 試しに「%s」を「%x」などに変更してみましょう。 そうすればアドレスが表示されるはずです。

yuki7505
質問者

お礼

%xにしたら出ました!ありがとうございます!!

その他の回答 (1)

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.2

確かにそのとおりなんですが、printfのフォーマットが%sになってるので、nullまでの文字列が表示されたのではないでしょうか?

yuki7505
質問者

お礼

ありがとうございます!

関連するQ&A