C语言初学者一般都会碰到涉及两个变量存储数据交换的问题,一般这类问题都是以交换数值作为任务。例如:
定义两个整型变量a=10,b=20;请设法将变量a,b的值交换一下,输出交换后的结果。
不少人看到这个问题后感觉无从下手,会自然想到用两个变量之间相互赋值来企图“暴力求解”,但最终都以失败告终。其实,解决这类问题,我们可以有两个思路。
一是采用引入一个新变量,以此新变量作为媒介进行交换。二是运用指针。第二种方法比较高级,也是我个人推荐的。两种思路,都可以化用为模板进行套用。
首先我们要搭建一个基本语句
#include<stdio.h>
int main(){
int a=10;
int b=20;
return 0;
}
接下来我们引入一个新的变量temp,做以下操作
int temp;
temp = a;
a = b;
b = temp;`
然后用printf("%d,%d\n",a,b);输出a,b即可。
如果使用指针,关键是要在基本语句的基础上构建以下体系
int *p1=&a;
int *p2=&b;
int tmp=*p1;
*p1=*p2;
*p2=tmp;
使用第一种方法的源代码如下:
#include<stdio.h>
int main(){
int a=10;
int b=20;
int temp;
temp = a;
a = b;
b = temp;
printf("%d,%d\n",a,b);
return 0;
}
如果使用指针,源代码如下`
#include<stdio.h>
int main(){
int a=10;
int b=20;
int *p1=&a;
int *p2=&b;
int tmp=*p1;
*p1=*p2;
*p2=tmp;
printf("a=%d,b=%d",*p1,*p2);
return 0;
}
总之,实现两个变量之间的交换,我们一定要有建立新变量,新指针的意识。这样才有利于问题的解决。