首先在看这一篇博客之前应该要了解到在main函数里面调用一个main函数外的函数,参数传过去只是一个拷贝的值。
如果直接把两个int传入函数,用一个中间变量交换他们俩,那么这只是改变了这个变量在swap函数里面的值,回到main里面就复原了。
那么,如何真正交换两个int变量的值呢?
用指针,把两个int的地址传过去才可以。
如下
#include <stdio.h>
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;
}
int main()
{
int a=4,b=5;
swap1(a,b);
printf("假交换 a:%d b:%d\n",a,b);
swap2(&a,&b);
printf("真交换 a:%d b:%d",a,b);
}
//假交换 a:4 b:5
//真交换 a:5 b:4