关于引用不能为空的问题
引用与指针最主要的三个区别:
1、引用必须初始化
2、引用不能为空
3、引用指向一个变量后,他指向的对象不会再发生改变
举例如下:
1
int& a;//错误,必须初始化
int n;
int& b = n;//正确
2
char* p = NULL;
char& q = *p;//错误,引用不能为空
3
int a;
int b;
int& m = a;
m = b;//此时m仍然指向a,m = b相当于a = b,a的值被修改
1、3两点能够理解,但是关于第二点,因为p为NULL,所以取值*p会有问题,感觉这是指针的特性,不是引用的特性啊,更神奇的是char* p = NULL;char& q = *p;这两句在vs2005下编译运行都能通过,char* p = NULL;char& q = *p;char r = *p;这三句在vs2005下能编译通过,运行时在char r = *p处崩溃。给我的感觉是引用能够为空,牛人来解释下?
1、引用必须初始化
2、引用不能为空
3、引用指向一个变量后,他指向的对象不会再发生改变
举例如下:
1
int& a;//错误,必须初始化
int n;
int& b = n;//正确
2
char* p = NULL;
char& q = *p;//错误,引用不能为空
3
int a;
int b;
int& m = a;
m = b;//此时m仍然指向a,m = b相当于a = b,a的值被修改
1、3两点能够理解,但是关于第二点,因为p为NULL,所以取值*p会有问题,感觉这是指针的特性,不是引用的特性啊,更神奇的是char* p = NULL;char& q = *p;这两句在vs2005下编译运行都能通过,char* p = NULL;char& q = *p;char r = *p;这三句在vs2005下能编译通过,运行时在char r = *p处崩溃。给我的感觉是引用能够为空,牛人来解释下?
...全文
相关推荐
通过向后分析进行空解除引用检测
通过向后分析进行空解除引用检测
引用与指针
C++中引用与指针的区别与联系,讲解比较详细,希望对大家有所帮助
C++引用&和指针在作为形参时的区别
C++引用&和指针在作为形参时的区别 int n; int &m = n; 在C++中,多了一个C语言没有的引用声明符&,如上,m就是n的引用,简单的说m就是n的别名,两者在内存中占同样的位置,不对m开辟新的内存空间,对m的任何操作,对n来说是一样的。 对于引用,有以下三条规则:
C/C++中指针和引用之相关问题深入研究
从内存分配上看,程序为指针变量分配内存区域,而不为引用分配内存区域,因为引用声明时必须初始化,从而指向一个已经存在的对象。引用不能指向空值
C++ const引用、临时变量 引用参数详解
下面小编就为大家带来一篇C++ const引用、临时变量 引用参数详解。小编觉得挺不错的现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧



