在Visual Studio上面写一个工具函数的时候发现了一个自己的知识漏洞,记录下来引以为戒。
下面这是个错误的示范!
void swap(int a, int b)
{
int c = a;
a = b;
b = c;
}
int main(void)
{
int a, b;
a = 3;
b = 4;
swap(a, b);
printf("a = %d; b = %d \r\n", a, b);
return 1;
}
然而,主函数里面的变量之间的值并没有交换。
常用方法一:地址传递
void swap(int *a, int *b)
{
int c = *a;
*a = *b;
*b = c;
}
int main(void)
{
int a, b;
a = 3;
b = 4;
swap(&a, &b);
printf("a = %d; b = %d \r\n", a, b);
return 1;
}
常用方法二:引用传递
这个方法是属于C++领域的内容了,所以要想使用必须得做:
- 第一步:把main.c改成main.cpp
- 第二步:添加语句
using namespace std;
void swap(int &a, int &b)
{
int c = a;
a = b;
b = c;
}
int main(void)
{
int a, b;
a = 3;
b = 4;
swap(&a, &b);
printf("a = %d; b = %d \r\n", a, b);
return 1;
}