C语言程序执行中,当定义了变量后,就相当于在内存中开辟了一部分的存储空间,不同空间存储的内容各异。在实际应用中,常常需要交换不同存储空间的内容,即变量内容的交换。用不同的思路,都能实现两个变量的交换。下面简单地介绍了三种实现方法:
/*
方法一 思路:
1定义一个中间变量temp;
2将变量x的值存储到temp中;
3将变量y的值存储到x中;
4将temp中的x的值存储到y中;
优点:代码简单易懂;
*/
void changeValue_One(int x,int y)
{
printf("x = %d,y = %d\n",x,y);
int temp = x;
x = y;
y = temp;
printf("x = %d,y = %d\n",x,y);
}
/*
方法二 思路:
1将变量x+y的和存储到x中;
2用变量x减去变量y存储到y中;
3用变量x再减去变量y存储到x中;
优点:内存不用重新分配存储空间;
缺点:当变量x或者y过大时,相加的和容易溢出分配的存储空间;
*/
void changeValue_Two(int x,int y)
{
printf("x = %d,y = %d\n",x,y);
x = x + y;
y = x - y;
x = x - y;
printf("x = %d,y = %d\n",x,y);
}
/*
方法三 思路:
1分别让变量x与y的异或值分别赋给x,y,x;
优点:不用重新开辟内纯空间;
缺点:方法新颖,代码较难懂;
*/
void changeValue_Three(int x,int y)
{
printf("x = %d,y = %d\n",x,y);
x = x ^ y;
y = x ^ y;
x = x ^ y;
printf("x = %d,y = %d\n",x,y);
}