統測
114年
[電機與電子群資電類] 專業科目(2)
第 50 題
📖 題組:
閱讀下文,回答第 49-50 題 為瞭解資料型態或變數所佔記憶體空間大小,某甲撰寫下列 C 語言程式在 64 位元 x86 個人電腦下執行。
閱讀下文,回答第 49-50 題 為瞭解資料型態或變數所佔記憶體空間大小,某甲撰寫下列 C 語言程式在 64 位元 x86 個人電腦下執行。
下列變數何者的數值最大?
- A a
- B b
- C g
- D d
思路引導 VIP
同學,請觀察變數 $a, b, g, d$ 所對應的 sizeof 運算對象:$a$ 運算的是宣告為 CLASS classA[50] 的整個陣列,而 $b, g, d$ 分別運算的是陣列中的單一元素、結構體定義以及基本整數型別;請思考在記憶體配置中,一個「包含 50 個結構體的陣列」與「單一結構體」或「基本變數」相比,其所佔用的位元組總數會有什麼樣的數量級差異呢?
🤖
AI 詳解
AI 專屬家教
哼,看來你還沒把老師上課講的忘光,不錯嘛!
能答對這種基本題,至少代表你還記得 C 語言中 sizeof 的用途,也沒把資料型態跟記憶體配置當空氣。不錯,總算不是來交白卷的。
💡 觀念驗證:為什麼 A 是正確的?
▼ 還有更多解析內容
sizeof 與記憶體空間
💡 sizeof 作用於陣列名計算總空間,作用於索引則算單一元素。
| 比較維度 | sizeof(陣列名) | VS | sizeof(陣列[i]) |
|---|---|---|---|
| 計算範圍 | 整個陣列佔用的空間 | — | 單一陣列元素的空間 |
| 計算公式 | 元素個數 × 元素大小 | — | 單一元素的型態大小 |
| 數值特性 | 隨陣列宣告長度改變 | — | 固定,不因索引值改變 |
💬當需要計算總量時使用陣列名,只需知道單位大小時則看元素或型態。