指標剛開始學,感覺學起來有點混亂。。。想請教一下大佬們具體的解題思路,謝謝了。
下列程式運行的正確結果是( )。
#include <stdio.h>
four(int x,int y)
{
int z;
z=x; x=y; y=z;
return;
}
main()
{
int a=9;b=5;
int x,y,*ptr1,*ptr2;
ptr1=&x;
ptr2=&y;
*ptr1=a+b;
*ptr2=a-b;
four(*ptr1,*ptr2);
printf("%d,%d\n",x,y);
}
uj5u.com熱心網友回復:
four那個函式相當于什么都不做,因為什么也改變不了,相當于a+b,a-b,所以最后結果就是輸出14,4uj5u.com熱心網友回復:
代碼有兩處錯誤#include <stdio.h>
void four(int x, int y)//------------用void表示沒有回傳值--------
{
int z;
z = x; x = y; y = z;
return;
}
int main()
{
int a = 9, b = 5;//--------a和b之間的分號改為逗號--------
int x, y, *ptr1, *ptr2;
ptr1 = &x;
ptr2 = &y;
*ptr1 = a + b;
*ptr2 = a - b;
four(*ptr1, *ptr2);
printf("%d,%d\n", x, y);
return 0;
}
因為four()函式的引數是int,屬于非參考傳遞引數,所以函式內部不會改變實參的值。因此,x的值就是a+b,y的值是a-b,即輸出14和4。
對于參考傳遞和非參考傳遞,請參考《C++中函式的陣列形參》希望能夠幫到你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/63087.html
標籤:C語言
上一篇:跪求大佬講解一下
