1樓:馬佳賢羿綾
輸出的結果和你預想的不一樣是因為你沒有理解關於引數傳遞的一些問題
引數的傳遞有兩種方式
:1。按值傳遞(你的程式用的都是這種方式),傳遞的只是當前值的一個副本(拷貝的),所有在函式中,副本的改變時不會影響原來的那個變數的(你的程式是變數i)
2。按引用傳遞,即按地址傳遞,這種引數傳遞在函式內部改變了變數的值將影響傳遞進去的那個變數
----------------------------------------------
inti=high; //i=
5reset(i/2); //
把i傳給函式reset,這時候傳遞的是i的一個副本,一個拷貝而已,在函式可能就變成了tmp_i
,對該值的改變時不影響外部變數i的
printf("i=%d\n",i);
//所以這裡輸出
5reset(i=i/2); //
這個可以寫成這樣i=
i/2,i
值改變了
等於2,然後把2傳給函式,和上面一樣
最後printf("i=%d\n",i);
//這裡輸出時i=
2reset(i/2);
//同上,一樣的原來
下面將輸出2
printf("i=%d\n",i);
workover(i); // 在函式workover內部的那個printf輸出
0printf("i=%d\n",i);
//同上i=2
******************************==
第一次樣給人解釋,記得加分哈
2樓:幸廷謙睦煙
inti=high;//i=5
reset(i/2);//這裡傳的是值不是地址所以函式對i做的任何修改在主函式沒有效果所以i=5
printf("i=%d\n",i);
reset(i=i/2);//i=i/2
i是整數
所以i=2;同樣reset函式不能影響主函式裡面i的值所以i=2printf("i=%d\n",i);
reset(i/2);//同第一個一樣i的值不變reset不能影響i=2;printf("i=%d\n",i);
workover(i);//同樣他也不能改i的值所以下面的i=2;這函式裡面有個列印語句(i%i)恆等於0的所以不管傳什麼進去
列印出來的值都是0
printf("i=%d\n",i);//i=2;
關於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語言程式問題?
1.在你打算學習c語言之前,你要下一個狠狠地決心.因為許多電腦愛好者在學習c語言的過程中,都會遇到困難,從而沒有堅持到最後.只有你下定狠狠地決心,才能學會c語言,才能學好c語言.2.要想學習好c語言,就要學會細心,耐心.c語言程式的編寫需要非常細心,因為一個標點符號的錯誤,可能導致程式的無法執行.3...
關於c語言程式編輯問題
include void fun int a,int b long main 我覺得你的本意應該是5,3,3,5吧!include void fun int a,int b main 您好,這個問題答案樓上已給出了,我在這給出本程式存在的問題,您本意是想將在函式改變的傳回去,但顯然沒有達到預期的目的...