1樓:北極星
#include
void fun(int *a,int *b)
long main()
2樓:匿名使用者
我覺得你的本意應該是5,3,3,5吧!
#include
void fun(int *a,int *b)main()
3樓:匿名使用者
您好,這個問題答案樓上已給出了,我在這給出本程式存在的問題,您本意是想將在函式改變的傳回去,但顯然沒有達到預期的目的,這又牽扯到了c語言中值傳遞和引用傳遞和指標傳遞,如果您想將結果傳回主程式,需要修改a和b指標所指向的值即修改*a和*b使用int c; c = *a; *b = *a; *a = c;您定義的void fun(int *a,int *b)中的a和b都是指標也是臨時變數,對它的修改對主程式沒有任何影響。您使用的三條語句是修改只是改變了a和b所指的地址,並沒有改變其中的值所以沒有達到您的目的,例如 x 的地址是0x0010 y 的地址是0x0014,那麼他們所指的地址的值是3,5,在fun中 a 指向了0x0014,b指向了0x0010即a和b分別是5,3對a和b來說已經交換,但他是fun中的變數當返回時釋放了所以沒有傳回去。此時主函式中的p還是指向x的地址即0x0010,q仍然指向y即0x0014由於這兩個地址裡的值沒有變所以輸入當然不會變,而c = *a ;將a指向的地址中的值即3賦值給c, *b = *a; 即將b指向的地址的值改為a指向地址的值,*a = c 同理;這都是直接修改它們所指向地址的值即直接修改0x0010h和0x0014所指的值,所以傳回去他們的值自然也改變了,進而達到了交換的目的。
4樓:
樓下**就很好了。。。
進入被調函式,a的值=p的值,b的值=q的值,,,但是注意變數a不是變數p ,,,它們是2個不同的變數。。。。程式返回,a,b跟p,q沒有任何關係了。。
c語言程式問題,C語言程式問題?
1.在你打算學習c語言之前,你要下一個狠狠地決心.因為許多電腦愛好者在學習c語言的過程中,都會遇到困難,從而沒有堅持到最後.只有你下定狠狠地決心,才能學會c語言,才能學好c語言.2.要想學習好c語言,就要學會細心,耐心.c語言程式的編寫需要非常細心,因為一個標點符號的錯誤,可能導致程式的無法執行.3...
關於C語言程式的問題,C語言上的問題abc1bc2的值a3,b4,c
setmem b,6 sizeof int 0 這個函式沒有定義 你這個函式是的意思應該是setmem,為b分配6個int長度的地址空間,並且每個偏移地址 回或是說b的元素 初答始為0了 void setmem int p int size,int value 你搜一下setmem這個函式宣告在哪個...
c語言程式問題新手,C語言程式問題 新手
include define n 50 人數 define fl 60 統計分數下限void sort float a,int c 選擇排序return r int main void include stdio.h main printf d num 輸出學生個數 程式比較短,考慮到樓主情況後面追...