一般函数如果使用void定义里面的形参变量会有单独的地址进行存放,在函数运行完之后形参内存地址会释放掉,而指针是直接对地址进行操作的,函数用指针变量可以直接对目标地址进行操作,运行之后,并没有产生新的地址,是对原本参数地址进行操作,所以不会被系统释放。
代码如下
#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",data1,data2);
return 0;
}