#include<stdio.h> main( ) { int x=0; func(x); printf("%d\n",x); } func(int x) {x=20;}
3 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
這個結果應該是0吧。
因為func函數傳的是值,只是簡單的將x的值傳給func函數,然后在func函數中重修修改傳入的值,將0修改為20,這一步只是在修改傳入值的值,如果在f函數中答應x,結果會是20,但是此致僅僅是func函數x的值,不是主函數x的值,當fun函數執行完后,其??臻g銷毀,自然不從在func函數的x,在主函數中答應的是main函數的x,它并未改變。為0;
如果fun函數傳入的是x的地址,則在func函數中就改變了x的值。這是程序這樣寫:
#include<stdio.h>
main()
{
int x=0;
func(&x);
printf("%d\n",x);
}
func(int * x)
{
*x=20;
}

偶然的你
TA貢獻1841條經驗 獲得超3個贊
這個,你調用函數的時候是單純的傳值,并沒有改變其數值,要改的話,把int x改為int &x應該就可以了。
還有我覺得你程序的最后結果應該是0,而不是20
- 3 回答
- 0 關注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消