c++入门--引用与指针,const与引用,NULL与nullptr
1.引用与指针:
1.1引用的介绍:
引用相当于一个变量的别名,向函数传参后或者在main函数中可以直接对这个变量进行操作。
1.2引用的返回:
函数返回的时候是生成了一个临时变量,这个变量具有常性,是不能对这个值进行修改的。但是如果返回的是int&的话,那么就是它的别名,那当然是可以进行操作的。(常量(const
)具有常性,意味着一旦被定义为常量,它的值就不能被修改。)而且这种情况也出现在进行运算的时候,运算的结果首先也是保存在一个临时变量中。(为了方便说明,我们在后面的const的权放大和缩小处说明)
1.3引用与指针的对比:
(1)引用不需要开空间,但是指针需要开空间(但是实际上在汇编层引用实际上就是用指针的方式实现的)
(2)引用不容易出现野指针的情况,但是指针很容易就出现野指针的情况
(3)引用在c++中没办法改变指向的对象
(4)sizeof引用看的是引用的对象,但是指针看的是平台的
(5)引用一定是需要初始化的,但是指针是不一定需要的
2.const的权值(可以缩小,可以平移,不能放大)
从图中可以看出,权值是可以平移缩小但是不能放大的。
后面b是为了验证运算时也会产生一个临时变量,具有常性,所以后面函数传参时一般都是(const int& ~)这样只是为了保证可以传参更舒服。因为不这么写根本传不进去hh,接收一定需要用const。
3.null与nullptr
null在c++中为0,所以如果函数重载那么就会出现下面这个bug的情况
但是如果你去用c语言也会g,因为如果是传(void*)0进去的话,因为c语言它转不了int*类型,指针类型会不匹配。
在c++中,新增了一个nullptr,这个是(void*)0,但是把它当参数传入时,它会自动类型转化。