農會 資訊管理類程式設計110 年第 3 題單選題
在C語言程式片段中,int* pa=new int[5]; int b=sizeof(pa); cout<<b; 其輸出為何?
C正確答案
sizeof(指標)回傳指標本身記憶體大小,在64位元系統下固定為8 bytes,與配置的陣列長度無關。
為什麼答案是 C
64位元系統下,任何型別的指標(如int*)大小皆為8 bytes,為本題正確答案。
考點:16位元系統考點:32位元指標考點:64位元指標考點:陣列大小誤算
載入中…
完整詳解
Pro · 無限重點 sizeof(指標)回傳指標本身記憶體大小,在64位元系統下固定為8 bytes,與配置的陣列長度無關。
看到sizeof(指標),直接聯想系統架構:64位元選8,32位元選4。本題預設64位元環境,秒選8。
逐選項分析
A16位元系統✕
早期16位元系統的指標大小或short型別大小,現代系統不適用。
B32位元指標✕
32位元系統下的指標大小,或32位元下int的大小,但不符合本題64位元預設。
C64位元指標✓ 正確
64位元系統下,任何型別的指標(如int*)大小皆為8 bytes,為本題正確答案。
D陣列大小誤算✕ 陷阱
誤將陣列長度5乘以早期2 bytes的int大小,或混淆指標大小與陣列總記憶體。
sizeof 運運算元常見結果 (以 64 位元系統為例)
| 變數/型別 | sizeof 結果 | 說明 |
|---|
| int* pa (指標) | 8 bytes | 64位元下,所有指標大小皆為 8 |
| int arr[5] (靜態陣列) | 20 bytes | 5 * 4 bytes (假設 int 為 4) |
| int x (整數變數) | 4 bytes | 一般 32/64 位元下 int 多為 4 |
考生極易將sizeof(pa)誤認為計算動態配置陣列的總大小。請牢記:pa只是個指標變數,sizeof(pa)永遠只計算「指標本身」儲存位址所需的寬度,在64位元下即為8 bytes!