|
发表于 2019-11-29 01:06:52
|
显示全部楼层
本帖最后由 18780518304 于 2019-11-29 13:33 编辑
你好我是这么理解的:指针p可以看作存放地址的一个普通变量,
*p相当于调用p这个变量存的地址所指向存储器中的值
- void swap(int *p1,int *p2) //传入两个指针;
- {
- int* p; //p ,p1,p2都是 存储地址值的普通变量;带上*号就可以指向他们地址存储的值了(5,8)
- //交换普通变量的值(此时是地址值),并没有交换他们所指向的值(5,8)
- //这样仅仅是将指针当普通变量使用了,但对于普通变量的实参传值给形参,
- //其实只是将实参的副本传了进去,没有改变真正的实参值。
- //所以并没有达到你想通过交换地址值来交换两个数的想法。
- p=p1;
- p1=p2;
- p2=p;
- }
- //如果你用此方法将其写在主函数中就行
- int main(){
- int a,b;
- int *pt1,*pt2;
- scanf("%d%d",&a,&b);
- pt1=&a;pt2=&b;
- int *p;
- if(a<b)
- {
- p=pt1;
- pt1=pt2;
- pt2=p;
- }
- printf("%d,%d",*pt1,*pt2);
- return 0;
- }
复制代码
大佬们勿喷,这只是我的想法,不对请指出。 |
|