引用的格式:type &ref=var;
区别:
1.引用只是变量的别名,不开辟新的空间,与原变量使用同一块内存单元。指针是一个新的变量,有自己的存储空间。
2.引用必须在声明时就初始化,指针则可以在任何时候初始化。
3.引用不能为空,必须总是引用一个对象。指针可以为空,不指向任何地方。
4.引用一旦被初始化,就不能再引用其他对象。指针如果没有用const修饰,就可以重新指向不同的变量。
5.如果引用被const修饰,可以在初始化时赋常量。指针除了0以外,任何时候都不能直接赋未经转换的常量。
6.引用声明时用&作为标识,使用时像变量一样直接使用。指针用*作为标识,使用时也要用*间接访问。
7.sizeof操作施加到引用上时,测试的是被引用对象的宽度。用于指针时,测试指针本身的宽度。
共同点:
1.引用的本质也是指针,但是编译器在编译阶段进行了转换。
2.指针和引用都是间接引用其他对象。前者是通过地址间接访问指向的对象,后者是用别名直接访问被引用的对象。