曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3725|回复: 0
打印 上一主题 下一主题

何时使用指针,引用以及按值传递

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2012-1-14 11:07:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在函数中使用引用参数的原因主要有两个:

1. 能够使我们修改调用函数中的数据对象。
2. 通过传递引用而不是整个数据对象,可以提高程序的运行速度。

当对象较大时(如结构和类对象),第二个原因最重要,使用指针作为参数也是基于同样的原因。实际上,引用参数是基于指针的代码的另一个接口。下面是对何时使用引用,何时使用指针,何时按值传递的一些指导原则:

对传递的值不做修改的函数
1. 如果数据对象很小,如内置数据类型或小型结构,那么按值传递。
2. 如果数据对象是数组,则使用指针,因为这是唯一的选择,并将指针声明为指向 const 的指针。
3. 如果数据对象是较大的结构,则使用 const 指针或 const 引用,这样可以提高程序效率,还可以节省复制结构所需要的时间和空间。
4. 如果数据对象是类的对象,那么使用 const 引用。类设计的语义常常要求使用引用,这是 C++ 新增这项特性的主要原因。因此,传递类对象参数的标准方式是按引用传递。

对于要修改调用函数中数据的函数
1. 如果数据对象是内置数据类型,那么使用指针。
2. 如果数据对象是数组,那么只能使用指针。
3. 如果数据对象是结构,则既可以使用指针也可以使用引用。
4. 如果数据对象时类对象,则使用引用。

当然,上面只是一些指导原则,具体情况具体分析,也可能有充分的理由做出其他的选择。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 16:18 , Processed in 0.091360 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表