1. 程式人生 > >字元指標輸出值的時候不用間接訪問運算子就能輸出字串的原因(整理)

字元指標輸出值的時候不用間接訪問運算子就能輸出字串的原因(整理)

遇到過這種問題:

int main(){

char *a="abcdefgh";

printf("%s\n",a);

return 0;

}      為什麼這樣就能輸出字串了呢?,而不需要用間接訪問符,也不是像輸出非字串陣列那樣迴圈輸出呢?

原因:

%s格式符表示輸出的是字串,後面對應的引數為字串陣列名或者是字元指標(字串的首地址);(%c輸出的是單個字元)

在C語言裡字串儲存方式是單個字元在記憶體裡連續儲存,並以‘\0’結尾,所以只要知道一個字串的首地址就把這個字串確定下來了,

所以在列印的時候printf就會連著一個一個列印字串裡的字元,直到遇到了‘\0’才停止!如果想要單個列印字串裡的字元的話,那就可以putchar