1樓:
你那個fun函式寫錯了,因為你用的是指標,你這樣指來指去根本就沒有達到交換的目的,應該為:void fun(int *a,int *b)
具體解答在c程式課本里面有的!!不能通過呼叫函式來改變實參指標變數的值,但可以改變指標變數所指變數的值
2樓:匿名使用者
fun()函式做的是交換指標,在主函式中被呼叫的時候,將原來分別指向a,b的指標x,y進行了交換,現在x指向b,y指向a,a,b裡面的值並沒有變化。
要做到交換a,b的值,應該這樣寫:
void fun(int *a,int *b)
3樓:
void fun(int *a,int *b)函式執行完畢後a還是a,b還是b,即a和b所指向的值沒有變。
void fun(int *a,int *b)函式執行完畢後a還是a,b還是b,但a和b所指向的值在函式內被改變了。
4樓:
void fun(int *a,int *b)
main()
你交換的只是地址不是數值
5樓:匿名使用者
你可以把指標看做是變數,函式體內改變的只是變數,指標指向的地址的值沒有改變。也就是說x,y的值沒有改變。所以輸出3,6
6樓:匿名使用者
x,y是作為值穿進去的,要想改變,必須傳地址
7樓:
*x=&a,*y=&b;
fun(x,y);
*a =&a, *b=&b
交換後*a =&b, *b=&a
a=3 b=6
8樓:藍蝶蓮花
應為列印輸出的是a和b ,而不是x,y.
誰能幫我解決一道C語言題目C語言一道題目,誰能幫我解得
include include include include define eps 1e 6 用於控制商的精確度 main else printf 回答錯誤 n break case 2 for i 1 i 10 i while c 0 printf d.d d n i,a,b scanf d d...
求教!一道C語言題目,求教一道C語言的題目!
你主函式裡m肯定還是1,func函式中的靜態變數應該是8了吧。你檢視變數值的位置是什麼樣的,如果在主函式裡檢視肯定是主函式中的m,即為1,因為發生作用域覆蓋了。你是第二次進入func後設定斷點,檢視m數值的可定為8。由程式執行結果為8 此時i 3,m 3 1 4,因此返回值為8 17 此時i 3 8...
一道C語言題目思路
設定一個for迴圈或者while迴圈,限制條件為 f n f n 1 phi 10 6 由於精度的問題,條件可改為1000000 f n f n 1 1000000 phi 1。f 0 0,f 1 1 int n 2 while 1000000 f n f n 1 1000000 phi 1 sys...