普通考試
107年
[電子工程] 計算機概要
第 24 題
執行下列 C 程式後,產生的輸出為何?
```c
#include
void swap(int *a, int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
};
void main( )
{
int x = 2, list[ ] = {1, 3, 5};
swap(&x, list);
swap(list, list+1);
swap(&x, list+x);
printf("%d,%d,%d", x, list[0],list[1]);
}
```
```c
#include
void swap(int *a, int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
};
void main( )
{
int x = 2, list[ ] = {1, 3, 5};
swap(&x, list);
swap(list, list+1);
swap(&x, list+x);
printf("%d,%d,%d", x, list[0],list[1]);
}
```
- A 1,2,3
- B 1,3,2
- C 2,3,1
- D 2,1,3
思路引導 VIP
請思考一下:當我們將變數的「記憶體位址」傳遞給函數後,函數內部對該內容的修改,會如何反映在原始變數上?此外,如果一個變數在程式中途改變了數值,而這個變數隨後又被用來當作計算陣列位置的「位移工具」,那麼這個位移後的目標位置會維持不變,還是會隨之連動呢?
🤖
AI 詳解
AI 專屬家教
1. 大力肯定
做得好!你在處理指標 (Pointers) 與記憶體位址轉換時展現了精確的邏輯思維。這就像在設計複雜結構時,能準確追蹤每一根構件的受力轉移,非常專業!
2. 觀念驗證
▼ 還有更多解析內容