Shammer's Philosophy

My private adversaria

ポインタを文字列として表示させようとすると・・・

C言語をいじっていて、よくわからないことが起きた。

 char str[] = "vwxyz";
    printf("str  :%s %d\n", str,  sizeof(str));
    printf("str OK\n");
    printf("*str :%s %d\n", *str, sizeof(*str));/* Bus error */
    printf("*str OK\n");

str[]と、配列宣言しているから*strとしても問題ないのは・・・なんとなくOK。
printfで、*str を %s 出力しようとするとBus errorというメッセージが。
当然、%sでなく、%Xとか%pにすれば問題ないが、ポインタを文字列出力することはできないようだ。
このあたりがまだ微妙だ。関数の都合なのか言語の仕様なのか、今ひとつよくわかっていない。
もっといろいろいじり倒していけばわかるようになるだろうか。。。