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

若C++程式片段如下,下述何者在執行編譯(Compile)時是正確的?電腦軟體設計(C++) 乙級 C++ 第 28 題 題目 圖片

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

難易度分析

3 / 5

本題要求考生精確區分 C++ 中指標常數的不同宣告方式及其對記憶體操作的限制,需同時考慮指標本身與所指內容的可變性,具備一定的概念辨析難度。

正確答案:②*ptr1 = 'D';

② *ptr1 = 'D';:ptr1 是非常數指標指向字元,雖然指標本身不可變,但可透過 解參考運算子 (*) 修改其所指向的記憶體內容,此操作在編譯階段語法正確。

錯誤選項解析

  • ① ptr1 = "knowledge";:char * const ptr1 是常數指標,其指向的位址在初始化後即被鎖定,編譯時不允許重新賦值指向其他字串位址。
  • ③ ptr2 = "management";:const char * const ptr2 是指向常數的常數指標,指標本身與指向的內容皆為唯讀,編譯時不允許重新賦值。
  • ④ *ptr2 = 'S';:ptr2 指向的是 const char 型別,屬於唯讀資料,嘗試透過解參考修改其值會觸發編譯錯誤。
Learning Tip

"本題核心考點為 C++ 指標常數性 的區別:char * const(常數指標,可改內容)vs const char *(指向常數,可改指向)vs const char * const(兩者皆不可)。實務上需嚴格區分「指標本身是否可變」與「指向資料是否可變」,這是技能檢定中極易混淆的高頻考點。"

學員答題分佈

①ptr1 = "knowledge";0%
②*ptr1 = 'D';0%
③ptr2 = "management";0%
④*ptr2 = 'S';0%

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

相似類型題目