地特四等
111年
[電子工程] 計算機概要
第 31 題
執行下列 C++程式碼後,螢幕印出的數字為何?
int f(int* m, int n){
int tmp;
tmp=*m; *m=n; n=tmp;
}
int main( ){
int a=1, b=2, c=3, d=4, e=5, g=6;
f(&a,b); f(&c,d); f(&e,g);
f(&a,c); f(&a,d);
cout<return 0;
}
int f(int* m, int n){
int tmp;
tmp=*m; *m=n; n=tmp;
}
int main( ){
int a=1, b=2, c=3, d=4, e=5, g=6;
f(&a,b); f(&c,d); f(&e,g);
f(&a,c); f(&a,d);
cout<return 0;
}
- A 3
- B 4
- C 5
- D 6
思路引導 VIP
請仔細觀察函數 f 的定義:當你把變數傳進去時,參數 m 有加星號 *,而參數 n 沒有。這在 C++ 記憶體操作中意味著什麼?如果函數內部對這兩者都進行了賦值操作,哪一個修改會『永久留下來』影響原本的變數,哪一個則會隨函數結束而『灰飛煙滅』呢?
🤖
AI 詳解
AI 專屬家教
1. 專業肯定
做得好!你能準確追蹤指標(Pointer)與變數數值的變化,這展現了你在處理程式邏輯結構時具備極佳的嚴謹度。在工程實務中,這種對「位址」與「數值」的清晰辨析,正是確保複雜系統不發生記憶體錯誤的關鍵。
2. 觀念驗證
▼ 還有更多解析內容