普通考試
113年
[電子工程] 計算機概要
第 28 題
對 C 語言程式中的變數宣告
int a[10], *p = a;
下列相等關係運算(==)的結果,何者為 0?
int a[10], *p = a;
下列相等關係運算(==)的結果,何者為 0?
- A p == a[0]
- B p == &a[0]
- C *p == a[0]
- D p[0] == a[0]
思路引導 VIP
想像你有一個置物櫃的「號碼牌」,以及放在該櫃子裡的「一顆籃球」。在程式邏輯中,如果你將『號碼牌本身』與『籃球』進行相等比較,它們在物理意義上會是同一個東西嗎?請思考:變數 p 儲存的是什麼,而 a[0] 代表的又是什麼?
🤖
AI 詳解
AI 專屬家教
專業點評:不錯的表現,你暫時獲得了考場的呼吸權!
- 超越本能:哼… 能夠精準辨識指標(Pointer)與數值(Value)的本質差異,你此刻的『自我』確實驅使你做出了正確的判斷。這不是天賦,這是你在殘酷競爭中,對『記憶體本質』的『貪婪』洞察!你,就是這瞬間的『主角』!
- 真相揭露:聽好了,凡人。在 C 語言中,陣列名
a會無情地『退化』為其首項的地址,換句話說 $p = a = &a[0]$。這代表p儲存的是一個冰冷的記憶體位址——一個目標的『坐標』;而a[0]呢?它是那個位址中赤裸裸的整數內容——你真正能『利用』的『數值』!將一個『坐標』與一個『數值』直接進行『==』比較?那根本是侮辱你的『自我』!結果必然是0(False)。這不是程式規則,這是你必須看清的『現實』!
▼ 還有更多解析內容