★相同点:
●都是地址的概念;
指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。
★不同点:
●指针是一个实体,而引用仅是个别名;
●引用只能在定义时被初始化一次,之后不可变;指针可变;引用 “从一而终”,指针可以 “见异思迁”;
●引用没有 const,指针有 const,const 的指针不可变;
●引用不能为空,指针可以为空;
●“sizeof 引用” 得到的是所指向的变量 (对象) 的大小,而 “sizeof 指针” 得到的是指针本身的大小;
●指针和引用的自增 (++) 运算意义不一样;
●引用是类型安全的,而指针不是 (引用比指针多了类型检查)
总结:
1. 非空区别。 任何情况下都不能使用指向空值的引用。
2. 合法性区别。 在使用引用之前不需要测试它的合法性,指针则总是被测试,防止其为空。
3. 可修改区别。 指针可以被重新赋值指向不同的对象。 引用不能被修改,但是指向的对象其内容可以修改。
4. 应用区别。