1樓:渾靜秀
首先:子函式(*變數) 呼叫 函式(&變數) 這樣的形式是要帶回返回值得
其次:此題在主函式裡呼叫子函式的時候把x y故意顛倒下 這裡考得應該是你對實參和形參的理解。對應如下:(呼叫時)
主 子 數值
y x 2
x y 1
看到這應該明白 子函式裡顯示的x y是子函式裡的x y 當然是 2 1 了
然後再子函式裡賦值 x = 3 y = 4 子函式結束,剛才說了 這樣的形式是要帶回返回值的,所以主函式裡的x y 也跟著變化 輸出主函式裡的 x y 當然是
4 3了
所以結果應該是 ? 你自己說吧
祝你進步 在有疑問可以發信到 [email protected] 願意為你解答!
2樓:
結果是:2 1 4 3
因為第一個fun(&y,&x),傳遞函式值是把1和2的地址傳遞給*x,*y,就相當於此時的x是2,y的值是1;
*x=3; *y=4;這兩句的意思是改的是主函式x等於4,主函式y等於3了,因為fun(&y,&x)把y的地址傳遞給了&x,把x的地址傳遞給了&y!
3樓:
首先是實參與形參的問題,函式中引用的形參,*x,*y代表輸入的第一個引數和第二個引數,你的傳參順序是&y,&x,當然輸出2,1。並且將第一個引數負值為3,第二個為4。
然後是傳地址的傳參形式,函式直接訪問了實際x,y變數,並修改了其中的值,所以,在輸出x,y就變成了4,3。
4樓:匿名使用者
想證明函式引數為變數和為指標的不同
首先執行fun(&y,&x)把y=2,x=1傳到void fun(int *x,int *y)得到*x=2,*y=1 然後執行printf("%d%d",*x,*y); 在視窗中得到2 1
再執行*x=3,*y=4
傳給主函式中fun(&y , &x) 得到y=3,x=4位置一一對應再執行printf("%d%d",x,y);在視窗中得到4 3所以執行結果為: 2 1 3 4
5樓:睢鳩運菱
輸出是2 1 4 3
函式呼叫時首先執行函式體內的printf("%d %d",*x,*y)輸出結果為
2 1;其次*x=3對y賦值為3,*y=4對x賦值為4,函式返回以後執行接下來的printf("%d %d",x,y)輸出結果為4 3
6樓:
輸出的值是2 1 4 3
首先執行fun函式的printf語句,輸出y和x的值:2 1
由於指標對x,y進行的是直接對記憶體地址上這個值的修改,所以在子函式當中不必return,回到主函式main當中,這兩個值已經被修改,然後printf出:4 3
7樓:匿名使用者
就是想證明函式引數為變數和為指標的不同,如果為指標,呼叫完之後在主函式中的實參之不變,但是若是指標實參就變了,本題目答案是
2 1 4 3
8樓:匿名使用者
結果是:2 1 4 3
c語言問題,C語言問題?
include include int main max min i 0 sum i 0 i 1 i 2 i 3 i 4 i 5 i 6 for j 0 j 6 j printf 去掉一個最高分 0.6lf max printf 去掉一個最低分 0.6lf n min printf 該選手最後的得分...
c語言問題,C語言問題?
char的範圍是 128 127的 你362就溢位了嘛 是這樣的 0362 0是表示8進位制 於是362在10進位制下是242 242溢位了 128 127 於是結果變成242 128 128 14 要明白這個,首先要明白記憶體中 c 變數是什麼樣子的。整數在記憶體中是以補碼的形式存取的。c 036...
C語言問題C語言問題,C語言小問題段錯誤是什麼
str2num char p num num k return num c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock printf n return 0 c語言小...