传值的地方是x=10;y=20;func(x,y);把x和y传给函数func。所以实参是x和y,形参是a和b。至于副本,是由编译器做的,比如对于你给的例子,编译器会创建副本_x=10;_y=20;在func函数交换的值是_x和_y的值,不会改变x和y自身的值,传地址的时候比如改成func(int* a,int* b) {int temp=*a;*a=*b;*b=temp;}func(&x,&y);编译器也会创建副本,只不过副本的值是&_x和&_y与&x和&y的值是一样的(同一块地址中的值),这样交换的话就会改变x和y本身的值,所以传值和传地址的实质是一样的。...