C++引用

引用

1、什么是引用

引用就是一种取别名的机制

为什么要使用指针:

①跨函数进行共享变量(输出型参数),引用可替代

②提高传参效率,引用可替代,效率比指针还高,不拷贝字节

③配合堆内存使用,只能使用指针

④配合字符串使用,string类可以替代

2、引用使用格式
类型名& 别名 = 数据;
3、什么情况下使用引用

①跨函数共享变量,引用比指针更安全(无需直接操作地址空间、不存在空引用,也极少出现野引用问题)、也比指针更方便(无需取地址、解引用)

②提高传参效率,引用的效率比指针还高,指针最起码还要传递4/8字节的地址编号,但是引用一个字节都不需要传递,但是引用和指针一样都有被修改的风险,因此为了保护目标需要增加const

4、使用引用需要注意的问题

①引用必须初始化,所以不存在空的引用

②可以引用右值,但是必须使用const修饰引用

const int& n = 10;

③引用不能中途更改引用的目标

④函数的返回值类型可以是引用类型,但是不能返回局部变量的引用

int& func(void)	//	false
{
	int num = 10;
	return num;
}

int& func(void)	//	true
{
	int* num = new int(10);
	return *num;
}
指针与引用的相同点和不同点

相同点:

①都可以跨函数共享内存,都可以提高函数的传参效率、也需要const保护

②可以定义数组指针,也可以定义数组引用

int arr[5] = {1,2,3,4,5};
int (*arrp)[5] = &arr;
int (&hehe)[5] = arr;

③可以定义函数指针,可以定义函数引用

void (*fp)(void) = func;
fp();
void (&xixi)(void) = func;
xixi();

不同点:

①引用是一种取别名的机制,指针是一种数据类型

②引用不需要额外的存储空间,指针需要至少4/8字节用于存储内存地址

③指针可以不初始化,引用必须初始化

④指针有空指针,但没有空引用

⑤指针可以更改指向的目标,但引用不可以

⑥指针可以配合堆内存使用,而引用不行

⑦可以定义指针数组,但不能定义引用数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值