引用是什么? 大家都知道它就是个别名!
http://blog.csdn.net/webscaler/article/details/6577429 (说是指针常量更正确)
引用的和指针的区别
引用的使用规则:
a:引用在创建的时候必须被初始化;指针可以不初始化(指针使用时必须先判断是否为空值
b:引用必须与一个确定的合法内存单元相关联,不存在NULL引用且不可以使用!; 而指针可以指向NULL
c:一旦引用初始化后,就不能改变引用所指向的变量; 指针可以改变指向别的对象
d: 引用只是别名,不占内存; 指针占内存,它是一个变量
这里说引用不占内存,上面又说是指针常量(占内存),那不是先后矛盾了吗?
其实引用是否占内存标准中并没有规定,可以视它为指针常量,并且在编译器优化后它不占内存
引用作函数的参数:
引用作参数时不产生引用指向的对象的副本,节省时间和空间,且能够直接对指向的对象进行操作,可以达到指针同样的效果,但是使用方法更简洁,不易错
引用作为函数的返回值:
不能返回函数内部临时对象的引用
当需要返回的对象作为左值时需要返回引用 比如重载操作符 [ ] 时就必须使用引用 ,例 str[3] = 'a';