引用:非对象,仅为对象的别名,定义需初始化。
一般初始化变量时,初始值会被拷贝在新对象中
然而定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用,
一旦初始化完成,引用和它的初始值对象一直绑定在一起,因为无法令引用重新绑定到另外一个对象
因此引用必须初始化。
因为引用并非对象,所以不能定义引用的引用。
指针:为对象,允许对指针赋值和拷贝,指针无需定义时赋值
和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值
不能定义指向引用的对象,引用非对象
指针的值:
1、指向一个对象
2、指向空对象
3、指向紧邻对象空间的下一个位置
4、无效指针,也就是上述情况之外的其他值
空指针不指向任何对象
生成空指针的方法:
1 int *p1 = nullptr; //最新的C++标准推荐使用 2 int *p2 = 0; 3 int *p3 = NULL; //需要导入cstdlib.h