引用和指针的区别

C++为什么要有引用


在学习C语言的时候我们都知道有指针这么一个东西,相信大部分人都头疼过,因为指针虽然威力很大,但是很棘手,一不小心就玩脱了。

指针其实就是一个变量,只不过指针存放的是数据在内存中存放的地址而不是数据本身的值,通过修改指针指向的类容可以改变一个变量的值

引用是引用了对象的一个同义词,就像一个别名,对引用的操作和对变量直接操作完全一样,引用和指针在语法上看起来不同,但是底层实现是一样的。

指针的大小和程序的地址空间有关,32位程序只有4G的地址空间,42亿9千万个地址。从0字节到42亿9千万,需要用4个字节才可以表示完。同样64位需要8个字节才能表示完。sizeof一个指针得到的是地址的大小,sizeof引用是和变量类型有关。指针++,加的是指向类型的大小。此外引用比指针安全一些,不会出现对空指针解引用的一大堆问题。


引用和指针的区别(面试)

1.指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间

2.引用在定义的时候必须要初始化,并且不能够被改变。指针在定义时不一定要初始化,并且指向的空间可以改变。(引用从一而终)

3.指针可以有多级指针(*p,**p),但是引用没有多级引用

4.指针和引用的自增结果运算不一样。(指针是指向下一个空间,引用是引用的变量值加一)

5.sizeof引用是引用的变量类型的大小,sizeof指针是指针本身的大小。

6.引用访问一个变量是直接访问,而指针访问一个变量是间接访问

7.指针在使用时需要解引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值