void swap(int *a,int *b){

int *t;

t=a;

a=b;

b=t;

}

void main()    

{

int x=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf("%d %d ",*p,*q);

}

结果为什么还是 3 5 ;

展开全部
收起
8回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 贺纸张

    16人对此回答表示赞同

            兄弟,你这想法是好的,如果在主函数里完全可以实现你的设想,但是,如果封装成函数就不得不考虑形式参数和实际参数的关系了。

            我用OD调试了一下这个程序,发现的问题是:在swap函数中,没有对指针p,q做任何操作,也就是说,p,q的值没有发生任何改变。为什么会这样呢?

      

    展开
    16
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 杏仁糖

    16人对此回答表示赞同

    一楼回答的很正确的,你的函数里只是改变了指针 ,而且是非传址,也可以修改函数参数为int** a,int** b,调用时使用swap(&p,&q)

     

    展开
    16
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 回忆的沙漏

    16人对此回答表示赞同

    问比尔结婚以后他的身影

    展开
    16
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Kenneth

    12人对此回答表示赞同

    void swap(int *a,int *b){

    int t;

    t = *a;

    *a = *b;

    *b = t;

    }

    展开
    12
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Owen

    9人对此回答表示赞同

    你只是交换a,b所指向的地址,并没有换地址所指的内容

    展开
    9
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Mira

    9人对此回答表示赞同

    程序应该这么写的哦!

    void swap(int *a,int *b){

    int *t;

    *t=*a;

    *a=*b;

    *b=*t;

    }

    void main()    

    {

    int x=3,y=5,*p=&x,*q=&y;

    swap(p,q);

    printf("%d %d ",*p,*q);

    }

    注意指针存的

    展开
    9
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Collin

    8人对此回答表示赞同

    一楼回答的很正确的,你的函数里只是改变了指针,而且是非传址,也可以修改函数参数为int** a,int** b,调用时使用swap(&p,&q)

    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 沧海一声笑

    8人对此回答表示赞同

    int x=3,y=5,*p=&x,*q=&y;

    swap(p,q);

    printf("%d %d ",*p,*q);

    }

     

    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部