问题描述
- 关于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++,还望大家多多提点指教,先谢谢各位了
解决方案
[你这里处理得参数是引用,它可以修改变量得值,并能够生效。引用是hicpp的概念。跟指针有点像。
解决方案二:
首先,引用和一级指针都在被调用函数中只能通过修改值的方式修改它,这是因为被调用函数的内存在你退出被调用函数是释放。
第二,你的参数是引用,引用是变量的别名,就是变量的另一个名字,所以,你的实参也就直接用变量本身
解决方案三:
http://www.cnblogs.com/dolphin0520/archive/2011/04/03/2004869.html
解决方案四:
函数指针参数的传递问题
函数指针参数的传递问题
关于c++ 函数指针的问题
----------------------
解决方案五:
函数里直接对参数进行修改,如果不是引用类型,是没法修改的,地址换了,值自然就换了
解决方案六:
swap参数里面传进去的是a.b的地址,所以值会改变。这里的ab是变量,&a和&b才代表指针。
解决方案七:
&是取地址的意思,void swap(int &a, int &b)
然后你调用后swap(i,j)
它会取i,j的地址,而不会发生复制的过程。直接让swap(i,j)中的i,j指向int i=1,j=2;
时间: 2024-08-22 15:14:38