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
統計: A(177), B(103), C(96), D(119), E(0) #1915925
詳解 (共 4 筆)
#5616925
題目可能出的不好
雖然題目是C語言,但在C++中
因為右側的"abc" 為字串常量(string literal)
所以宣告應為 const char *p="abc"; puts(p);
(推薦這樣宣告)
而 const char * (字串常量)本質上就是個字元陣列,而陣列名稱具有指標性質。
所以"輸出整個字串"時變數直接使用 p 而非 *p
再補充一下 :
又或者說puts() 裡面放的參數要是 char *(陣列) 或是 const char * (字串常量)
那麼 *p 又是甚麼呢 ?
答案是字串(陣列)的起始位址 -> p[0]
參考一下實跑圖
可能很難讀懂,所以要慢慢咀嚼
如有大神發現錯誤,一定要糾正我 :))
也可以參考這
https://openhome.cc/Gossip/CGossip/PointerAndString.html
https://blog.csdn.net/whatday/article/details/106267398
5
0