28 下列那個 C 程式碼執行後會輸出字串"abc"?
(A)char *p="abc"; puts(p);
(B)char *p="abc"; puts(*p);
(C)char *p="abc"; putchar(p);
(D)char *p="abc"; putchar(*p);

答案:登入後查看
統計: A(177), B(103), C(96), D(119), E(0) #1915925

詳解 (共 4 筆)

#3289690
puts =>  適用於輸出字串 ...
(共 128 字,隱藏中)
前往觀看
17
0
#3298622
puts( )和putchar( )的差...
(共 41 字,隱藏中)
前往觀看
10
0
#5616925

題目可能出的不好
雖然題目是C語言,但在C++中
因為右側的"abc" 為字串常量(string literal)
所以宣告應為 const char *p="abc"; puts(p); 
(推薦這樣宣告)

而 const char * (字串常量)本質上就是個字元陣列,而陣列名稱具有指標性質。
所以"輸出整個字串"時變數直接使用 p 而非 *p

再補充一下 :
又或者說puts() 裡面放的參數要是 char *(陣列) 或是 const char * (字串常量)

那麼 *p 又是甚麼呢 ?
答案是字串(陣列)的起始位址 -> p[0]

參考一下實跑圖
632bed0794828.jpg


可能很難讀懂,所以要慢慢咀嚼
如有大神發現錯誤,一定要糾正我 :))

也可以參考這
https://openhome.cc/Gossip/CGossip/PointerAndString.html
https://blog.csdn.net/whatday/article/details/106267398

5
0
#3497151
 getchar() ->取得第一...
(共 166 字,隱藏中)
前往觀看
5
0