- ベストアンサー
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'のアドレス)が入るのでは 無いんでしょうか・・?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
printf関数の書式指定で「%s」が使われています。 この「%s」は、そのアドレスから始まる文字列を意味します。 よって、文字列が表示されています。 試しに「%s」を「%x」などに変更してみましょう。 そうすればアドレスが表示されるはずです。
その他の回答 (1)
- shigatsu
- ベストアンサー率26% (511/1924)
回答No.2
確かにそのとおりなんですが、printfのフォーマットが%sになってるので、nullまでの文字列が表示されたのではないでしょうか?
質問者
お礼
ありがとうございます!
お礼
%xにしたら出ました!ありがとうございます!!