首页
社区
课程
招聘
[求助]C指针问题
发表于: 2011-1-7 22:10 3990

[求助]C指针问题

2011-1-7 22:10
3990
#include<stdio.h>
void swap(int *p1, int *p2)
{   int *p;
    p=p1;
    p1=p2;
    p2=p;
}

int main()
{   int a,b;
    int *p_1,*p_2;
    p_1=&a;  
        p_2=&b;
    if(a<b)
    swap(p_1,p_2);
        return 0;
}
这个为什么值不会变?
谁能跟我说一个明白

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 179
活跃值: (26)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
调用swap函数的时候,传进去的是两个指针。相当于把main函数中的p_1何p_2复制了一份放到了堆栈里。
函数里面操作的是堆栈里的p_1和p_2,把两个值调换了下,但是main函数中的p_1何p_2却没有变。

所以说这个swap函数中相当于什么都没做,自摸了下而已。如果写成

  int p;
   p=*p1;
   *p1=*p2;
   *p2=p;
这样就可以了。

也就是说,如果函数的参数是指针,而你在函数中却没有操作指针指向的地址中的数据,而只是玩指针的话,对外部是不会有影响的。
2011-1-7 22:22
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢谢谢- -.
2011-1-7 22:43
0
游客
登录 | 注册 方可回帖
返回
//