自分はC言語初心者でして、今独学で「猫でも分かるC言語プログラミング」という本を参考に読み進めているのですが、どうしても解決できない疑問と衝突してしまいましたので質問掲示板を利用させていただきます。
どうかどなたかご教授ください
#include <stdio.h>
main()
{
char a[10] = "abcde";
char *p;
p = a;
printf("%s, %s\n", a, p); /* ① */
printf("%d, %d\n", a, p); /* ② */
}
このコードについてなのですが
実行結果は自分のパソコンでは
abcde, abcde
1245012, 1245012
となりました。
②においては当然aはa[0]の格納されているアドレスを表すはずだと理解できたのですが
①のaが示す結果がabcdeとなるのが何故なのかがどうしても分かりません。
アドレスがabcdeということなのでしょうか?
それとも%sで表す時は特別に全て表示するという規則があったのでしょうか(なかったように思うのですが)。
どなたかお願いします。