C++ Primer学习笔记——复合类型
引用
引用有两种:左值引用和右值引用,此处先讨论左值引用。
引用只是给变量起了另一个名称,在初始化时,并非将初始值拷贝给引用变量,而是与该变量绑定在一起。在使用引用时,必须要用左值对其进行初始化。
指针
指针是一个专门用于存储内存地址的特殊类型变量,可以使用指针来间接访问它指向变量。
在使用指针时,程序员必须明确清楚,该指针是指向了一个有效的变量,避免试图解引用一个指向未知变量的指针(又叫做“野指针”),因为我们不知道其指向的地址的值是什么。
C++11中新添加了nullptr字面值来说明指针为空指针,在C++程序中尽量使用nullptr,而不要使用NULL或0。(Effective Modern C++中有详细说明,这本书up主只看了一点,还没有看完)
指针作为条件判断来使用
void*指针比较特殊,可以用于存放任何指针类型的指针,也可以存放任何类型变量的地址。
指向指针的指针(就是套娃,一层套一层)
总结
指针和引用的区别如下(这也是up主在刚毕业找工作面试中遇到过最多的问题之一)
指针是一个具体的变量,它存储的是一个变量的内存地址,而引用不是,引用只是某个变量的别名,并与其原始变量共存。
指针可以在其程序的生命周期内进行赋值和拷贝,而引用不允许这些操作,它始终只服务于一个对象(或变量)。
指针可以不用初始化,但是引用被定义后必须要指明被绑定的对象,即必须被初始化。
