C語言/C++實現兩數交換函式
阿新 • • 發佈:2018-12-15
首先我們可以先引入一箇中間變數temp進行數值交換。
在C語言中:
下面的這個函式能不能達到函式交換的目的?
void Swap(int x, int y)
{
int temp = 0;
temp = x;
x = y;
y = temp;
}
int main()
{
int x = 1;
int y = 2;
Swap(x, y);
printf("x = %d , y = %d\n", x, y);
system("pause");
return 0;
}
執行一下:
我們發現這個函式是不能完成交換的功能的,這是因為在Swap(int x,int y)被呼叫時,實參進行副本初始化,函式並沒有訪問呼叫傳遞的實參本身,因而也不會修改實參的值。
所以在C語言中我們通常通過傳址來進行兩個數的交換,這時候就會利用到指標。
void Swap(int *x, int *y) { int temp = 0; temp = *x; *x = *y; *y = temp; } int main() { int x = 1; int y = 2; Swap(&x, &y); printf("x = %d , y = %d\n", x, y); system("pause"); return 0; }
執行一下:
此時就完成了兩個數的交換。
在C++中:
C++中我們可以使用引用形參達到目的:
void Swap(int& x, int& y) { int temp = 0; temp = x; x = y; y = temp; } int main() { int a = 1; int b = 2; Swap(a, b); cout << "a = " << a << endl; cout << "b = " << b << endl; system("pause"); return 0; }
執行一下:
此時也完成了兩個數的交換。
此外,還有一些其它的交換方法供參考:
x = x^y;
y = x^y;
x = x^y;
x = x*y;
y = x/y;
x = x/y;