Q117.
以下C++程式宣告,那些為正確?
電腦軟體設計(C++) · 乙級 · C++ · Q117
難易度分析
3 / 5
本題採取複選形式,要求對多種不同的陣列宣告方式進行逐一判定,且選項中包含容易產生混淆的語法規範,提升了整體判別的認知負荷。
正確答案 (複選):①, ②, ③
- ① int a[]={1, 2};:陣列初始化時可省略陣列大小,編譯器會根據初始化列表的元素個數自動推斷陣列長度,此為標準 C++ 語法。
- ② char *a[3];:指標陣列宣告合法,`char *a[3]` 表示建立包含 3 個 `char` 型別指標的陣列,常用於儲存多個字串位址。
- ③ char s[10]="test";:字元陣列宣告並賦予字串常數初始化,陣列大小 10 足以容納 "test"(含結尾的 null 終止字元 `\0`),符合 C++ 規範。
錯誤選項解析
- ④ int n=5, a[n]:標準 C++ 不支援可變長度陣列 (VLA),陣列大小必須為編譯時期常數。應改用 `const int n=5;` 或使用 `std::vector<int>` 動態配置。
Learning Tip
"此題核心考點為 C++ 陣列宣告與初始化的合法性。常考陷阱在於混淆 C91 的 VLA(可變長度陣列) 與 C++ 的差異——C++ 標準規定陣列大小必須是編譯期可確定的常數。實務上建議優先使用 `std::vector` 或 `std::array` 以符合現代 C++ 的安全規範。"
學員答題分佈
①int a[]={1, 2};0%
②char *a[3];0%
③char s[10]="test";0%
④int n=5, a[n]0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!