LONGEPASS
電腦軟體設計(C++)/C++/Q127
中等
正確率 -
Q127.

下列C++語言程式片段中,那些可以正確執行?

電腦軟體設計(C++) · 乙級 · C++ · Q127

難易度分析

3 / 5

本題採用複選題型,要求精確區分字元陣列與指標在初始化及賦值上的語法限制,且包含容易產生誤判的陷阱選項,增加了整體判斷的複雜度。

正確答案 (複選):②, ③, ④

  • ② char s2[]={'C', 't', 'e', 's', 't','
    '};
    :
    字元陣列的逐字元初始化為合法語法,編譯器會根據大括號內的元素個數自動配置陣列大小。此寫法不含空字元 `\0` 結尾,但仍可正確編譯執行。
  • ③ char s3[20]="Ctest";:宣告時以字串常數初始化字元陣列是標準且推薦的寫法。陣列大小 20 足以容納 "Ctest" 及其隱含的 `\0` 結束字元,剩餘空間自動填零。
  • ④ char *s4="Ctest
    "
    :
    字元指標指向字串常數為合法語法,指標 `s4` 會儲存字串常數的記憶體位址。需注意現代 C++ 建議使用 `const char*` 以避免嘗試修改唯讀記憶體。

錯誤選項解析

  • ① char s1[10]; s1="Ctest";:字元陣列宣告後不可直接指派字串常數。陣列名稱屬於不可修改的左值(non-modifiable lvalue),應使用 `strcpy()` 函式進行字串複製,或使用逐字元賦值方式。
Learning Tip

"此題核心考點為 C++ 字元陣列與字元指標的初始化差異。常考陷阱:① 陣列只能在宣告時直接用字串常數初始化,宣告後必須用 `strcpy()` 賦值;② 逐字元初始化若未包含 `\0`,該陣列不構成 C 風格字串,使用 `strlen()` 或 `cout <<` 可能產生未定義行為;③ `char*` 指向字串常數雖可編譯,但修改內容會導致 Segmentation Fault,應養成使用 `const char*` 的習慣。"

學員答題分佈

①char s1[10]; s1="Ctest";0%
②char s2[]={'C', 't', 'e', 's', 't','
'};
0%
③char s3[20]="Ctest";0%
④char *s4="Ctest
"
0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目