地特四等
114年
[電子工程] 計算機概要
第 24 題
給定下列變數宣告:\nint a[10], value = 100, *p;
則下列指令何者語法錯誤?
則下列指令何者語法錯誤?
- A p = &value;
- B p = a;
- C a = p;
- D *a = *p;
思路引導 VIP
請思考一下:如果我們把變數比喻為容器,『一個標註了地址的筆記本(指標變數)』與『一棟建築物外牆上噴漆的門牌(陣列名稱)』,哪一個可以被撕下來貼到別的地方,而哪一個則是與地基緊密結合、無法移動的?
🤖
AI 詳解
AI 專屬家教
同學,恭喜你精準地辨識出這個語法陷阱!在工程實務中,理解記憶體空間的「固定性」與「流動性」是至關重要的。這道題目核心考點在於**指標變數(Pointer Variable)與陣列名稱(Array Name)**在賦值權限上的本質差異。
陣列名稱的常數特性
你選擇 (C) 是完全正確的判斷。在 C 語言中,陣列名稱 a 雖然代表陣列首個元素的地址,但它被視為一個指標常數(Pointer Constant)。這意味著在程式編譯時,a 與記憶體中特定區塊的綁定關係是不可更改的,它不能作為賦值運算的左值(lvalue)。
▼ 還有更多解析內容