int *p, *q = NULL, k = 1;
p = &k;
選項:A. *q=0 B. *p=k+1 C. p=0 D. q='\0'
| 選項 | 合法性 | 說明 |
|---|---|---|
A. *q=0 | 錯誤 | q=NULL,解引用空指標 → 未定義行為,通常崩潰 |
B. *p=k+1 | 正確 | p 指向 k,修改 k=2,完全合法 |
C. p=0 | 正確 | 指標賦值為空指標常數,合法(等同 p=NULL) |
D. q='\0' | 正確 | '\0' 為整數常數 0,隱式轉換為空指標,合法 |
原標註答案為 C,**實際錯誤選項為 A**。*q=0 解引用空指標是嚴重錯誤;p=0 僅將指標變數設為 NULL,完全合法。
指標變數本身可賦值為 0/NULL/'\0';**解引用空指標** (*q) 才是錯誤。本題正確答案應為 A。