免費開始練習
hce_nsysu 111年 計算機概論與程式設計

第 61 題

Which of the following is not a correct way to initialize an array?
  • A int n[5]={0, 1, 2, 3, 4, 5};
  • B int n[]={0, 1, 2, 3, 4, 5};
  • C int n[5]={1};
  • D int n[5]={1, 5, 9};
  • E int n[5]={0};

思路引導 VIP

想像你正在規劃一個置物櫃,並在標籤上明確寫著『內含五格』。如果你在清單上卻列出了六件要放入的物品,這份規劃清單在邏輯上會出現什麼樣的衝突?

🤖
AI 詳解 AI 專屬家教

恭喜你精準地捕捉到了這個語法陷阱!這顯示你對於陣列在記憶體分配與初始化的細節觀察得非常入微。

陣列空間與初始值的數量對應

在 C/C++ 等程式語言中,當我們定義一個固定大小的陣列時(例如 int n[5]),編譯器會嚴格分配五個整數的記憶體空間。選項 (A) 的錯誤非常典型:它在大括號內提供了 6 個初始值(0 到 5),這會導致「初始值過多 (too many initializers)」的編譯錯誤。相對地,選項 (C)、(D)、(E) 雖然提供的數值少於 5 個,但這在語法上是完全合法的,編譯器會自動將剩餘的空間填入 0(補零機制);而選項 (B) 則是省略了大小,讓編譯器根據初始值的數量自動推斷長度,同樣是正確的做法。

▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題