-2
鑑於這種C代碼:輸出的像調用C代碼參照
int x=12,y=10;
void tswap(int pa, int pb) {
int tmp;
tmp=pa;
pa=pb;
pb=tmp;
x=x+pa;
x=x-pb;
y++;
printf("%d %d %d %d\n",pa,pb,x,y);
}
int main() {
int a=4;
tswap(x,a);
printf("%d %d %d\n",x,y,a);
return 0;
}
我必須弄清楚什麼,如果C中的call-by-參考它會打印。
這是我的期望。
首先
X = 12 Y = 10且a = 4
after tswap(12,4):
pa=x=12 pb=a=4
after tmp=pa:
tmp=pa=x=12
-----------
after pa=pb:
tmp=x=12
pa=pb=a=4
-------------
after pb=tmp:
pb=tmp=x=12
pa=a=4
after x=x+pa
x=16
------------
and after x=x-pb and y++
x=4,y=11
因此,我認爲X = 4,PB = 12,PA = 4,Y = 11;但答案是-4 12 -4 11.我哪裏錯了?
C中沒有引用引用。要找出你的代碼的作用,只需編譯並運行它。 – 2013-04-07 19:33:18
@OliCharlesworth我知道在C語言中並沒有引用引用,也就是說在頂部。「c代碼就像」所以,只要認爲一個代碼類似的語法與C和具有調用參考 – 2013-04-07 19:35:45
@OliCharlesworth什麼會你調用'int a = 1,b = 2; tswap(&a,&b);'帶'void tswap(int * pa,int * pb){...}'? – A4L 2013-04-07 19:37:29