想了下,知道了
sub(x2,x1)的执行过程是这样的:
x1=40;x2=30;x2=40;
int x1=30,x2=40;
main()
{ int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf("\n%d,%d,%d,%d\n",x3,x4,x1,x2);
}
sub(int x,int y)
{x1=x;x=y;y=x1;
printf("x1=%d,x=%d,y=%d\n",x1,x,y);
}
/*
程序结果:
x1=10,x=20,y=10
x1=40,x=10,y=40
10,20,40,40
对于第一个函数sub: x3->x,x4->y x=10 y=20
实现了x与y交换,但是返回到main函数时,变量被释放掉了
所以没有实现x3与x4的交换
对于第二个函数sub: x2->x,x1->y x=40 y=30
实现了x与y交换,x=10 y=40
但是x1是全局变量,所以其值为x1=x=x2=40;
所以返回到main函数时,x2=40,x1=40