leolewin
2015-09-10 13:29
采纳率: 100%
浏览 2.4k

关于c++的中函数指针作为参数的问题

函数实现
void swap(int &a, int &b)
{
    int tmp = a;
    a = b;
    b = tmp;
}

函数使用:
int i=1,j=2;
swap(i,j);

如上所示,swap函数传递进来的是两个整形变量的地址,有两个问题
1、那么swap的实现里面,为什么直接交换a,b的值就实现了地址交换?难道这里的a,b代表指针吗?
2、使用swap时为什么没有使用swap(&i,&j)?
初学c++,还望大家多多提点指教,先谢谢各位了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • oyljerry 2015-09-10 14:04
    已采纳

    [你这里处理得参数是引用,它可以修改变量得值,并能够生效。引用是hicpp的概念。跟指针有点像。

    点赞 打赏 评论
  • bdmh 2015-09-10 13:26

    函数里直接对参数进行修改,如果不是引用类型,是没法修改的,地址换了,值自然就换了

    点赞 打赏 评论
  • 天马狂飙 2015-09-10 13:41

    swap参数里面传进去的是a.b的地址,所以值会改变。这里的ab是变量,&a和&b才代表指针。

    点赞 打赏 评论
  • Evankaka 2015-09-10 13:42

    &是取地址的意思,void swap(int &a, int &b)
    然后你调用后swap(i,j)
    它会取i,j的地址,而不会发生复制的过程。直接让swap(i,j)中的i,j指向int i=1,j=2;

    点赞 打赏 评论
  • 不死奇迹 2015-09-10 14:58

    首先,引用和一级指针都在被调用函数中只能通过修改值的方式修改它,这是因为被调用函数的内存在你退出被调用函数是释放。
    第二,你的参数是引用,引用是变量的别名,就是变量的另一个名字,所以,你的实参也就直接用变量本身

    点赞 打赏 评论
  • 另一花生 2015-09-10 15:14
    点赞 打赏 评论

相关推荐