普通考試
108年
[資訊處理] 計算機概要
第 20 題
下列 C 程式執行後的輸出為何?
#include
void fun(int *a, int b)
{
*a = *a + b;
b++;
}
int main(void)
{
int a, b;
a = b = 1;
fun(&a, b);
printf("%d, %d", a, b);
return 0;
}
#include
void fun(int *a, int b)
{
*a = *a + b;
b++;
}
int main(void)
{
int a, b;
a = b = 1;
fun(&a, b);
printf("%d, %d", a, b);
return 0;
}
- A 1, 1
- B 1, 2
- C 2, 1
- D 2, 2
思路引導 VIP
請思考一下:當我們把一個變數的『住址』交給別人,跟只把變數『目前的樣子拍照』傳給別人,這兩種行為在對方動手做修改時,對我們家裡原本的東西會產生什麼不同的後果?
🤖
AI 詳解
AI 專屬家教
恭喜答對!這展現了你對記憶體配置的精準掌握
- 觀念驗證:這題的核心在於參數傳遞方式的差異。當執行
fun(&a, b)時:&a是傳遞「位址」(Call by Reference),因此函式內對*a的修改會直接作用於main裡的 $a$。
▼ 還有更多解析內容