第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

用指針作為變量什么時候可以改變實參

用指針作為變量什么時候可以改變實參

Qyouu 2019-05-22 15:47:02
#includevoidfun1(int*a,int*b);voidfun2(int*a,int*b);voidfun3(int*a,int*b);intmain(){inti=10,j=20,*x=&i,*y=&j;//fun1(x,y);printf("%d%d",*x,*y);輸出1020//fun2(x,y);printf("%d%d",*x,*y);輸出1010fun3(x,y);printf("%d%d",*x,*y);//輸出2010return0;}voidfun1(int*a,int*b){int*temp;temp=a;a=b;b=temp;}voidfun2(int*a,int*b){int*temp;*temp=*a;*a=*b;*b=*temp;}voidfun3(int*a,int*b){inttemp;temp=*a;*a=*b;*b=temp;}/*(1)對與第一個fun1()函數(shù)為什么他們的值沒有發(fā)生改變呢?我的理解是,fun()函數(shù)中是a,b的地址調(diào)換了應(yīng)該是改變了值才對應(yīng)該是2010,但是他們沒有改變。(2)對與第二個fun2()函數(shù)*temp,*a,*b他們是指針變量所指向的值發(fā)生變化,應(yīng)該不會影響實參i,j吧但是和我想的不一樣。(3)對與第三個fun3()函數(shù)為什么就改變了呢?*/
查看完整描述

2 回答

?
瀟湘沐

TA貢獻1816條經(jīng)驗 獲得超6個贊

指針本質(zhì)上是一個代表地址的整數(shù),用于尋址,強制類型轉(zhuǎn)換確實可以賦值給整型。但是并不是所謂的地址調(diào)換,所以是你對指針的理解錯誤了。你這樣在整型和指針之間亂轉(zhuǎn)類型,尤其直接把拿int的值去尋址,八成都改了不知道哪里的內(nèi)存了。
吐槽下你的編譯器:1.一個(int型的a)居然可以被賦值給一個(指針temp)而不用顯示強制類型轉(zhuǎn)換。2.居然可以把一個(int型的a)直接*a就當(dāng)作指針用。
                            
查看完整回答
反對 回復(fù) 2019-05-22
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

嚴(yán)格的說法,在c中你無法改變實參,因為c中傳遞參數(shù)是通過復(fù)制來傳遞的,由main函數(shù)到被調(diào)函數(shù)的過程中實參和行參已經(jīng)完全沒有了關(guān)系,除了值相同之外
之前就回答過你了,fun1中的行參a以及b和main中的x以及y除了指向相同的地址之外沒有任何的關(guān)系,你對調(diào)了ab不會對x和y產(chǎn)生任何影響,也不會對i和j產(chǎn)生影響
而你所理解的能改變實參,指的是通過指針可以改變指向變量的值(畢竟指針就是干這個的?。?,無論指針(被調(diào)函數(shù)(fun1fun2fun3)中的ab以及main中的xy)在哪里,只要指向的地方相同都能訪問到那個指向的變量(i以及j),即通過*a或者*x就能改變i的值!
fun2是錯誤的寫法
                            
查看完整回答
反對 回復(fù) 2019-05-22
  • 2 回答
  • 0 關(guān)注
  • 692 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號