亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下運行后,為什么結果是10而不是20?

如下運行后,為什么結果是10而不是20?

C
弒天下 2022-03-24 17:13:19
#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;
}


查看完整回答
反對 回復 2022-03-28
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

錯,結果應該是0.
調用func(x)只是把實參x賦給func的形參,從func返回后,實參的值并沒有修改到,所以x還是0.

查看完整回答
反對 回復 2022-03-28
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

這個,你調用函數的時候是單純的傳值,并沒有改變其數值,要改的話,把int x改為int &x應該就可以了。
還有我覺得你程序的最后結果應該是0,而不是20

查看完整回答
反對 回復 2022-03-28
  • 3 回答
  • 0 關注
  • 153 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號