民國108年 第2梯次 電腦軟體設計(C++)乙級 學科

第32題

函數f1 之第一個參數的資料結構為陣列in t pages[10][30];,下列有關二維陣列在函數f1 之宣告方 式,何者是正確?

題目

函數f1 之第一個參數的資料結構為陣列in t pages[10][30];,下列有關二維陣列在函數f1 之宣告方 式,何者是正確?

  1. (1) void f1 (int pages[][], in t size);
  2. (2) vo id f1(in t pages[][30], int size);
  3. (3) void f1(int pages[10][], int size);
  4. (4) void f1(int& pages, int size);

官方答案

(2) vo id f1(in t 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 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料