1. 程式人生 > >C語言--函式傳引數

C語言--函式傳引數

 在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; }