C++语言之参数传递
来源:互联网 发布:光环大数据坑吗 编辑:程序博客网 时间:2024/06/05 01:00
非引用传递:
答:当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的值。
指针形参:
答:与其他非引
用类型的形参一样,该类形参的任何改变也仅作用于局部副本。
例如:
void reset(int *ip)
313
{
*ip = 0; // changes the value of the object to which i p points
ip = 0; // changes only the local value of ip; the argument
is unchanged
}
调用 reset 后,实参依然保持原来的值,但它所指向的对象的值将变为 0:
int i = 42;
int *p = &i;
cout << "i: " << *p << '\n'; // prints i: 42
reset(p); // changes *p but not p
cout << "i: " << *p << endl; // ok: prints i: 0
引用参数:
答:引用形参直接关联到其所绑定的实参。
void swap(int &v1, int &v2)
{
int tmp = v2;
v2 = v1;
v1 = tmp;
}
复制实参副本会带来什么问题?
答:当实参对象较大时,效率会很低;所以会选择用加const的引用参数。
含有可变形参的函数:
答:省略符形参有下列两种形式:
void foo(parm_list, ...);
void foo(...);
为什么有些函数的返回类型是void,却要用return?
答:因为返回类型是 void 的函数使用 return 语句是为了引起函数的强制结束。
如:
// ok: swap acts on references to its arguments
void swap(int &v1, int &v2)
{
// if values already the same, no need to swap, just return
if (v1 == v2)
return;
// ok, have work to do
int tmp = v2;
v2 = v1;
v1 = tmp;
// no explicit return necessary
}
- C语言函数参数传递之痛
- C&C++语言之可变参数传递
- C语言函数参数传递之痛
- C语言函数参数传递之痛
- C语言之传递可变参数
- c语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言参数传递
- C语言 参数传递
- C语言参数传递
- c语言传递参数
- C语言之旅(5)参数传递(值传递,指针传递,数组传递)
- c语言之函数参数传递之数组篇
- C语言的参数传递
- C语言的参数传递
- Recover Deleted Linux Files With lsof
- codeforces round 252 (div.2 ) D
- 要换个发型+不要在床上办公
- 字符串的所有组合
- JSoup QUERY
- C++语言之参数传递
- 2011Android技术面试整理附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题)
- C++实现队列(数组版)
- linux下安装vsftp
- 网络I/O虚拟化
- 你真的了解HTML吗?–雅虎面试题
- 博客开篇
- 从UE成为产品管理
- ZOJ-1178