C语言交换函数
void swap(int *a, int *b){
int *t = a ;
a = b;
b = t;
}
int main()
{
int a = 3;int b = 4;
swap(&a, &b);
printf("%d%d", a, b);
}
为什么这种方式无法完成交换 你交换的只是 指针的值,又不是 指针指向的值
你没理解指针和解引用 void swap(int *a, int *b)
{
int t = *a ;
*a = *b;
*b = t;
}
你可以把*的位置挪一挪,试一下 像楼上那样改一下试试 调用 swap() 函数时,往函数传了两个实参 &a 和 &b,这时计算机只是把 &a 和 &b 各复制一份分别放到 swap() 函数的两个形参 a 和 b 中,在 swap() 函数中,a 与 b 的值互换,即将地址互换,对于 &a 与 &b 这两个原件来说没有影响,swap() 函数执行完后,swap() 函数的两个变量 a 和 b 就被释放了,主函数的输出语句 printf("%d%d", a, b); 中 a 和 b 还是原来的值。 #include<stdio.h>
void swap(int *a, int *b)
{
int temp = *a ;
*a = *b;
*b = temp;
}
int main()
{
int a = 3;int b = 4;
swap(&a, &b);
printf("a=%d\nb=%d", a, b);
return 0;
}
因为你在函数里面交换的是两个参数的地址,并没有对里面的值进行操作。我修改了一下,你再看看
页:
[1]