而以下两种是不能实现交换的:
void swap1(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
void swap2(int *a,int *b)
{
int *temp;
temp=a;
a=b;
b=temp;
}
对于swap1,不能实现交换的理由是,C语言中函数的传的是形参,也就是一个副本,虽然在函数内体内交换了,但对真实的数据没影响。例如以下代码:
{
int a=1,b=2;
int ta=a,tb=b;
int temp;
temp=ta;
ta=tb;
tb=temp;
}
a和b并没有因此交换,交换的只是编译器自动生成的临时变量ta(形参)和tb。
而对于swap2,执行过程如下代码:
{<