誕生日にもらった意外なもの

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'のアドレス)が入るのでは
無いんでしょうか・・?

A 回答 (2件)

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

    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2001/02/28 06:17

printf関数の書式指定で「%s」が使われています。


この「%s」は、そのアドレスから始まる文字列を意味します。
よって、文字列が表示されています。

試しに「%s」を「%x」などに変更してみましょう。
そうすればアドレスが表示されるはずです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/02/28 06:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!