民國107年 第2梯次 電腦軟體設計(C++)乙級 學科
第41題
函數f1 之第一個參數的資料結構為陣列in t pages[10][30];,下列有關二維陣列在函數f1 之宣告方 式,何者是正確?
題目
函數f1 之第一個參數的資料結構為陣列in t pages[10][30];,下列有關二維陣列在函數f1 之宣告方 式,何者是正確?
- (1) void f1(int pages[][], int size);
- (2) void f1(int pages[][30], int size);
- (3) void f1(i nt pages[10][], int size);
- (4) void f1(int& pages, int size);
官方答案
(2) void f1(int pages[][30], int size);
解析
在 C/C++ 中,將二維陣列當作函式引數傳遞時,除了第一維(列數)可以省略外,其餘維度的大小必須明確指定,因為編譯器需要第二維的大小來計算每一列的位移(row stride = 30 × sizeof(int) = 120 位元組)。因此正確宣告為 void f1(int pages[][30], int size);,即選項2。選項1 pages[][] 與選項3 pages[10][] 都省略了第二維,編譯會失敗;選項4 int& pages 是單一個 int 的參考,並非二維陣列,型態不符。第一維寫 10 或留空都可以,但 [30] 不可省略。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。