C++为什么要用引用而不是指针

我相信有很多刚学完C,再学C++的人都会有个疑惑,引用是干嘛的,为什么不用指针?

 

首先,引用 跟 指针 在作用上没有太多区别,作用都是 当遇到较大的 对象(变量)作为函数的 形参 传递时,用引用或指针可以节省内存的开销,因为他不像按值传递那样,

额外要创建临时变量。

 

既然这样,那为什么C++要用引用呢?

引用是一段内存的别名,引用的大小跟所代表的变量的大小是一样的,而指针他的大小则永远都是4个字节。

而且 引用 的风格更符合C++面向对象的思想。指针用 -> 来使用对象下的成员。而引用则用 . 来使用对象下的成员。

 

	struct a zje;
	struct a &b = zje;
	struct a *c = &zje;
	
	//b.a 和 c->a 是一样的,都是使用zje下的a成员。 


引用和指针的不同:

 

(1)指针在定义的时候可以不初始化,但引用在定义的时候必须初始化。

(2)指针可以为空,引用不能为空。

(3)指针可以改变他的指向的对象,但引用不可以。

(4)引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。

(5)引用比指针更安全。由于不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用,因此引用很安全。对于指针来说,它可以随时指向别的对象,并且可以不被初始化,或为NULL,所以不安全。const 指针虽然不能改变指向,但仍然存在空指针,并且有可能产生野指针(即多个指针指向一块内存,free掉一个指针之后,别的指针就成了野指针)。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值