地特三等申論題
105年
[資訊處理] 程式語言
第 一 題
📖 題組:
C 語言宣告一陣列如 int *x[5]={"BENZ", "AUDI", "LEXUS", "APPLE", "BMW"};試說明下列指標運算的結果為何?(每小題 3 分,共 9 分) (一) *(x+1) (二) *(x+1)+1 (三) **(x+1)
C 語言宣告一陣列如 int *x[5]={"BENZ", "AUDI", "LEXUS", "APPLE", "BMW"};試說明下列指標運算的結果為何?(每小題 3 分,共 9 分) (一) *(x+1) (二) *(x+1)+1 (三) **(x+1)
📝 此題為申論題,共 3 小題
小題 (一)
*(x+1)
思路引導 VIP
看到指標與陣列混合的考題,首要原則是將指標運算轉換為陣列索引:*(x+n) 等同於 x[n]。接著找出陣列中對應位置的元素,並釐清該元素所代表的意義(例如字串的起始位址)。
小題 (二)
*(x+1)+1
思路引導 VIP
先辨別 x 是儲存字串常數位址的指標陣列。依序解析:x+1 指向陣列第二個元素,(x+1) 取得指向 "AUDI" 的指標,最後 +1 進行指標位移。需注意題目宣告為 int 可能為出題筆誤,實務作答應以 char* 邏輯為主並補充嚴格型態的說明以確保拿分。
小題 (三)
**(x+1)
思路引導 VIP
考生看到此題應先釐清陣列名稱作為指標的特性,以及字串陣列的記憶體結構。利用 *(x+i) 等同於 x[i] 的指標運算法則,由內而外逐步對指標進行解提取(dereference),即可推導出最終指向的記憶體內容。