#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ù)為什么就改變了呢?*/
用指針作為變量什么時候可以改變實參
Qyouu
2019-05-22 15:47:02