高考申論題
105年
[資訊處理] 程式語言
第 五 題
五、請問下列 C 語言程式碼執行後輸出結果為何?(20 分)
int main(){
double d[10][20][30][40];
printf("%d\n", (int) sizeof(d[1][5]));
printf("%d\n", (int) sizeof(d[1][5][20]));
printf("%d\n", (int) (d - &d[3]));
printf("%d\n", (int) (d[3][4] - d[5][8]));
}
📝 此題為申論題
思路引導 VIP
遇到多維陣列與指標算術,首要釐清 sizeof 的運算對象是否因傳遞而退化為指標,並確定其代表的維度與實體大小。接著分析指標減法的型別與步長,謹記同型別指標相減的結果是兩者相差的「元素個數」,而非實體記憶體位元組數。
🤖
AI 詳解
AI 專屬家教
【解題思路】利用 C 語言多維陣列的記憶體連續性特性,判斷 sizeof 的作用域,以及計算相同型別指標相減所代表的元素跨度(步長)。
【詳解】
已知:假設在主流 32/64 位元編譯環境下,double 型別大小通常為 8 bytes。陣列宣告為 double d[10][20][30][40];,其在記憶體中配置為連續的一維區塊。
▼ 還有更多解析內容