返回信息流☆─────────────────────────────────────☆
dongri (dongri) 于 (Sun Aug 2 22:59:50 2009) 提到:
函数参数为指针和为引用有什么区别?两者不是实际都传的为地址吗?而且使用引用在函数中不容易出错,但感觉实际中还是用指针做为函数参数的多,这是为什么?两者在效率上有什么不同吗?
☆─────────────────────────────────────☆
nickluchen (Octopus Z) 于 (Sun Aug 2 23:12:55 2009) 提到:
我个人认为这个跟调用函数中的数据有关,有些数据,可能只是直接malloc一个空间,比如
p = (int *) malloc ( sizeof(int) );
那么这个数据直接传递指针就行了,参数没必要是引用
foo(p);
还是等大牛来给你解释吧
☆─────────────────────────────────────☆
PtwCJ (鲜的每日C|女共产党员的男朋友) 于 (Sun Aug 2 23:18:33 2009) 提到:
我猜用指针的多是因为习惯了C吧
操作符重载的时候使用引用比较方便
而且引用也不可能存在null reference
☆─────────────────────────────────────☆
jokerlee (Jackal The Dire) 于 (Mon Aug 3 00:21:53 2009) 提到:
【 在 dongri 的大作中提到: 】
: 函数参数为指针和为引用有什么区别?两者不是实际都传的为地址吗?而且使用引用在函数中不容易出错,但感觉实际中还是用指针做为函数参数的多,这是为什么?两者在效率上有什么不同吗?
一个更灵活, 一个更安全
指针C兼容, 这个很重要, 因为系统api往往都是C接口
☆─────────────────────────────────────☆
Sophie8746 (小北@水完就走绝不回头.果断围观.热情帮顶) 于 (Mon Aug 3 08:52:20 2009) 提到:
http://www.cnblogs.com/netqer/archive/2008/10/20/1315396.html
【 在 dongri 的大作中提到: 】
: 函数参数为指针和为引用有什么区别?两者不是实际都传的为地址吗?而且使用引用在函数中不容易出错,但感觉实际中还是用指针做为函数参数的多,这是为什么?两者在效率上有什么不同吗?
☆─────────────────────────────────────☆
jmpesp (我是垃圾) 于 (Mon Aug 3 11:20:49 2009) 提到:
引用就是变相指针,引用的内部实现就是用指针实现的,所以效率基本上差不多。如果说到方便,这页不好讲,各有各的好处。指针出现得比较所是因为c语言只认得指针,不认识引用。
☆─────────────────────────────────────☆
dongri (dongri) 于 (Mon Aug 3 14:32:27 2009) 提到:
【 在 jmpesp 的大作中提到: 】
: 引用就是变相指针,引用的内部实现就是用指针实现的,所以效率基本上差不多。如果说到方便,这页不好讲,各有各的好处。指针出现得比较所是因为c语言只认得指针,不认识引用。
哦,原来C中是没有引用的呀,我觉得这位说得比较在理,谢谢!
☆─────────────────────────────────────☆
nickluchen (Octopus Z) 于 (Mon Aug 3 15:36:30 2009) 提到:
re
这点的确是。不过一般咱们用的编译器都认识,也无所谓了
【 在 dongri 的大作中提到: 】
: 哦,原来C中是没有引用的呀,我觉得这位说得比较在理,谢谢!
☆─────────────────────────────────────☆
Green (First) 于 (Mon Aug 3 16:31:10 2009) 提到:
我觉得它们之间的主要区别是,1 合法性,传引用参数,不需要做参数合法性检测,传指针则需要考察期合法性,防止为空;2 不可改变性,引用一旦初始化了,就不能改变;
至于它们的使用,一般来说如果变量始终指向一个对象,不会改变的话,应该使用引用。其他一般使用指针参数。
☆─────────────────────────────────────☆
LoveRose (江南西道|Movie|路过团镇团正太) 于 (Mon Aug 3 16:55:16 2009) 提到:
安全性
【 在 Green (First) 的大作中提到: 】
: 我觉得它们之间的主要区别是,1 合法性,传引用参数,不需要做参数合法性检测,传指针则需要考察期合法性,防止为空;2 不可改变性,引用一旦初始化了,就不能改变;
: 至于它们的使用,一般来说如果变量始终指向一个对象,不会改变的话,应该使用引用。其他一般使用指针参数。
☆─────────────────────────────────────☆
Torpedo666 (鱼雷导弹No.2) 于 (Mon Aug 3 22:13:04 2009) 提到:
看你要对参数干什么了~
杀鸡用牛刀的问题~
☆─────────────────────────────────────☆
lynx (他们都叫我Ly) 于 (Mon Aug 3 22:27:05 2009) 提到:
形参实参的问题,c语言时候要让函数改变一个变量的值要传地址,c++里面就多了一个传引用。
☆─────────────────────────────────────☆
ki (谁) 于 (Tue Aug 4 08:43:04 2009) 提到:
其实没啥区别。
指针用得多是为了兼容 C。
【 在 dongri (dongri) 的大作中提到: 】
: 函数参数为指针和为引用有什么区别?两者不是实际都传的为地址吗?而且使用引用在函数中不容易出错,但感觉实际中还是用指针做为函数参数的多,这是为什么?两者在效率上有什么不同吗?
☆─────────────────────────────────────☆
ki (谁) 于 (Tue Aug 4 08:48:27 2009) 提到:
g++ 事实 说话
1
2
3 void a(int *x){
4 (*x)++;
5 }
6 void b(int &x){
7 x++;
8 }
9
汇编结果
a()
====================
movl 8(%ebp), %eax
movl (%eax), %eax
leal 1(%eax), %edx
movl 8(%ebp), %eax
movl %edx, (%eax)
popl %ebp
ret
b()
====================
movl 8(%ebp), %eax
movl (%eax), %eax
leal 1(%eax), %edx
movl 8(%ebp), %eax
movl %edx, (%eax)
popl %ebp
ret
【 在 ki (谁) 的大作中提到: 】
: 其实没啥区别。
: 指针用得多是为了兼容 C。
☆─────────────────────────────────────☆
shenlei (我爱果子|[路]|天山南北|潇湘隐士) 于 (Tue Aug 4 10:57:57 2009) 提到:
指针兼容C...
引用的安全性...
【 在 dongri (dongri) 的大作中提到: 】
: 函数参数为指针和为引用有什么区别?两者不是实际都传的为地址吗?而且使用引用在函数中不容易出错,但感觉实际中还是用指针做为函数参数的多,这是为什么?两者在效率上有什么不同吗?
这是一条镜像帖。来源:北邮人论坛 / cpp / #44245同步于 2010/9/26
CPP机器人发帖
[合集] 【求助】函数参数为指针和为引用有什么区别?
shenlei
2010/9/26镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。