LONGEPASS
數位電子/程式語言/Q68
中等
正確率 -
Q68.

C 語言程式中,當執行到第18 列後,印出a、b;*ptr1 及*ptr2 之值,下列敘述何者正確?數位電子 甲級 程式語言 第 68 題 題目 圖片

數位電子 · 甲級 · 程式語言 · Q68

難易度分析

3 / 5

此題需要細緻追蹤指標指向及其變化,並辨別哪兩項敘述符合程式執行結果,故被評為中等難度。

正確答案 (複選):①, ④

  • ① a=64,b=69:第 15 列直接將 變數 a 賦值為 64,第 16 列透過 指標間接存取 計算 `*ptr1+5 = 64+5 = 69` 賦值給 b,因此執行到第 18 列時 a=64、b=69。
  • ④ *ptr1=64,*ptr2=64:第 14 列 `ptr1=&a` 與第 17 列 `ptr2=&a` 使兩個 指標變數 均指向 a,形成 指標別名(aliasing),故 `*ptr1` 與 `*ptr2` 皆等於 a 的值 64。

錯誤選項解析

  • ② a=69,b=64:a 在第 15 列被明確賦值為 64,b 在第 16 列經 指標運算 得到 69,此選項將兩者數值顛倒。
  • ③ *ptr1=64,*ptr2=69:第 17 列執行 `ptr2=&a` 後,ptr2 的指向已從 b 改為 a,因此 `*ptr2` 與 `*ptr1` 均間接存取同一變數 a,兩者皆為 64 而非 69。
Learning Tip

"解題關鍵在於追蹤每個 指標變數 的指向變化:`ptr = &變數` 改變指標指向,`*ptr = 值` 透過指標修改目標記憶體內容。第 17 列 `ptr2=&a` 是最易忽略的一步,它使 ptr2 從指向 b 改為指向 a,導致 `*ptr2` 的最終值與 b 不同。"

學員答題分佈

①a=64,b=690%
②a=69,b=640%
③*ptr1=64,*ptr2=690%
④*ptr1=64,*ptr2=640%

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

相似類型題目