C語言--函式傳引數
阿新 • • 發佈:2018-12-15
在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;
}