指针是指向一个指定类型变量的地址值;
引用是一个指定类型变量的别名,主要用于函数参数和返回值类型;
引用不可为空,但指针可以,指针是一个变量可以随意赋值,但引用是一个指定类型变量的别名,若指定类型变量不存在则无法定义其别名,
故引用定义时必须初始化。另外引用一旦指定则不可改变。
引用的内在实现跟指针一样,可以通过汇编看出。所以引用其实也是占内存空间的。
使用场景:
若你定义的变量是指向另一个对象,如果他可能为空,就用指针,如果全程你都不允许为空,则可以使用引用,这样就不需要总在使用的过程
中判断是否为空了,这样可以看出引用是指使用指针要安全
const 在指针和引用的使用
若要一个指针指定变量地址后并且不能改变,则 int* const p = &nXXX; 并且这里的 p 必须在定义的时候初始化,
引用是一个指定类型变量的别名,主要用于函数参数和返回值类型;
引用不可为空,但指针可以,指针是一个变量可以随意赋值,但引用是一个指定类型变量的别名,若指定类型变量不存在则无法定义其别名,
故引用定义时必须初始化。另外引用一旦指定则不可改变。
引用的内在实现跟指针一样,可以通过汇编看出。所以引用其实也是占内存空间的。
使用场景:
若你定义的变量是指向另一个对象,如果他可能为空,就用指针,如果全程你都不允许为空,则可以使用引用,这样就不需要总在使用的过程
中判断是否为空了,这样可以看出引用是指使用指针要安全
const 在指针和引用的使用
若要一个指针指定变量地址后并且不能改变,则 int* const p = &nXXX; 并且这里的 p 必须在定义的时候初始化,
这样引用一个变量的功能,其实可以直接使用引用 int& p = &nXXX;
具体参考:http://blog.csdn.net/listening_music/article/details/6921608