C语言指针使用函数交换两个变量的值

2024-12-13 10:50:44
推荐回答(2个)
回答1:

这个地方会出现不好理解的东西。
调用函数的时候,你放入了int a int b 但是这其实不是你的main函数中的a b只是相当于他们的副本,也就是复制了一个a 和b 传入函数 所以你改变的只是传入的副本 也就是复制的副本a b所以在main函数中打印的ab不会出现变化 依然是a=3,b=6
现在回答第二个问题,怎么会让ab的值变化:传入指针,也就是在main函数中使用a b的指针,然后吧指针传入到函数里面 这个时候ab就会真正的发生变化,因为指针指向的是ab的物理地址,也就是真正的ab,不是副本,这个时候就会改变ab的值。想要理解,可以去百度传值参数和引用参数。纯手打,望采纳

回答2:

void swap(int *a, int *b)
{
int tmp = *b;
*b = *a;
*a = tmp;
}
int main()
{
int a = 3, b = 6;
printf("a=%d, b=%d\n", a, b);
swap(&a, &b);
printf("a=%d, b=%d\n", a, b);
}