双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

关于引用不能为空的问题

强迫症专用头像 强迫症专用头像 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
引用与指针最主要的三个区别:
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处崩溃。给我的感觉是引用能够为空,牛人来解释下?
...全文

相关推荐

评论 16
收藏 已收藏
分享
返回顶部
强迫症专用头像
C++ 语言 65,214 成员 250,514 内容