C语言实现两数交换函数
我们可以引入一个简单的中间变量t进行两个数值交换。
int t; t=x; x=y; y=t;然而在swap(int x,int y)被调用时,实参进行副本初始化,函数并没有访问调用传递的实参本身,因而也不会修改实参的值。
那么下列函数
void swap(int x, int y) { int t; t=x; x=y; y=t; }将达不到交换的目的。
在C++中我们可以使用引用形参达到目的:
void swap(int &x, int &y) { int t; t=x; x=y; y=t; }
利用指针值交换实现
#include<stdio.h> void swap(int *x, int *y) { int t; t=*x; *x=*y; *y=t; } int main() { int a=1,b=2; swap(&a,&b); printf("a=%d,b=%d",a,b); return 0; }PS:其他的一些交换数值方法
x=x*y; y=x/y; x=x/y;
x=x+y; y=x-y; x=x-y;;
x=x^y; y=x^y; x=x^y;