c语言指针交换两个变量的值
前言
普通的函数值传递交换两个变量的值是无法实现的,如果传给swap函数的参数是两个变量地址的话,才能实现真正的值的交换。
提示:以下是本篇文章正文内容,下面案例可供参考
一、代码(指针变量作为函数参数)
1、记录自己写错的情况
void swap(int *p,int *q)
{
int *tmp;
tmp=p;
p=q;
q=tmp;
}
这里为什么是错的?
首先,我们把main函数里的a,b的地址传给指针p,q后,这就意味着p指向存放变量a的内存区域,q指向存放变量b的内存区域,我们想要改变a,b的值就是要改变p,q指向的内存区域的值,但是上述代码并没有这样做,上述代码只是让p指向q原来的内存区域,q指向p原来的内存区域,在主函数里面存放a,b变量内存区的值并没有改变,这个函数的最终效果就是产生了一个指向变量b的指针p,以及指向变量a的指针q而已。
2、正确代码
void swap(int *p,int *q)
{
//我们的目标是改变a,b内存区的值,现在我们已经有了指向两个内存区的指针
int tmp;
tmp=*p;
*p=*q;
*q=tmp;
}
二、总结
再好好看看指针的相关内容,,哎