下面是一个错误示范
#include <stdio.h>
void changeData(int data1,int data2)
{
int tmp;
tmp=data1;
data1=data2;
data2=tmp;
}
int main()
{
int data1=10;
int data2=20;
printf("交换前:data1=%d,data2=%d\n",data1,data2);
changeData(data1,data2);
printf("交换后:data1=%d,data2=%d\n",data1,data2);
}
问题就出在,data1和data2在两个函数中虽然函数名相同,但是地址是不同的,所以不能进行数字互换;
访问一个数据除了可以用变量名,还可以用地址,这时就能想到指针
下面就是通过地址来互换数据
#include <stdio.h>
void changeData(int *pdata1,int *pdata2)
{
int tmp;
tmp=*pdata1;
*pdata1=*pdata2;
*pdata2=tmp;
}
int main()
{
int data1=10;
int data2=20;
printf("交换前:data1=%d,data2=%d\n",data1,data2);
changeData(&data1,&data2);
printf("交换后:data1=%d,data2=%d\n",data1,data2);
}