C++集锦二 引用和指针

1.什么是“引用”?声明和使用“引用”需要注意哪些问题?
引用就是某个目标变量的“别名”,对引用的操作与对变量的操作效果完全相同。声明一个引用需要对其进行初始化,这不是新定义了一个变量,它只是表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用不占存储单元。

2.使用“引用”作为函数参数有哪些特点?
(1)传递效果与指针是一样的。这时形参成为实参变量或对象的一个别名来使用,对形参的操作就是对相应目标对象的操作。
(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参进行操作。而是用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,传递的对象还要调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
(3)与指针相比,引用更容易使用,更清晰。

3.将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?
格式:类型标识符 &函数名(形参列表及类型说明){//函数体}
好处:在内存中不产生被返回值的副本(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该变量生存期的结束,相应的引用也会失效,产生runtime error!)
注意事项:
(1)不能返回局部变量的引用。原因是局部变量会在函数返回后被销毁,因此被返回的引用就成了“无所指”的引用,程序会进入未知状态。
(2)不能返回函数内部new分配的内存的应用。原因是虽然不存在局部变量被销毁的问题,可是又会面临其他尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际变量,那么这个引用所指向的空间就无法释放,造成memory leak。
(3)可以返回类成员的引用,但最好是const。

4.什么时候需要使用“常引用”?
如果既要利用引用提高程序的效率,又要保证传递给函数的数据不在函数中被改变,就应使用常引用。

5.“引用”与指针的区别是什么?
指针通过某个指针变量指向一个对象后,对所指向的变量间接操作。程序中使用指针,程序的可读性差。而引用本身就是目标对象的别名,对引用的操作就是对目标对象的操作。

6.什么时候使用指针?什么时候使用引用?什么时候应该按值传递?
下面是一些指导原则:
    对于那些函数,它们只使用传递过来的值,而不对值进行修改。
(1)如果对象数据很小,如内置数据类型或小型结构,使用按值传递。
(2)如果数据对象是数组,则使用指向const的指针。
(3)如果数据对象是较大的结构,则使用const指针或者const引用,以提高程序的效率。
(4)如果数据对象是类对象,则使用const引用。


    对于那些函数,它们需要修改传递过来的值。
(1)如果数据对象是内置数据类型,则使用指针。
(2)如果数据对象是数组,则只能使用指针。
(3)如果数据对象是结构,则使用指针或者引用。
(4)如果数据对象是类对象,则使用引用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值