C++ vs 编译,帮我看看为什么显示值不能为null
答案:2 悬赏:70 手机版
解决时间 2021-02-23 10:17
- 提问者网友:焚苦与心
- 2021-02-22 11:10
#include
#include
#include
最佳答案
- 五星知识达人网友:忘川信使
- 2021-02-22 11:46
NULL在C/C++标准库中被定义为一个宏,一般为:
#define NULL ((void*)0) /*C中的“标准”写法,NULL被替换为一个void*类型的指针右值,值等于0;由于是void*类型,可以隐式转化为其它类型的指针。
#define NULL 0 //C++,相对C简化定义的原因是C++中void*无法自由隐式转换为其它类型的指针,而字面量0可以隐式转换为指针类型;尽管它实际上可以被作为整数0使用而不引起编译问题,但要注意,从设计目的上而言,NULL应当总是只作为空指针使用。
char c = NULL相当于char c = 0,也就是把c初始化为0。0在这里并不是空指针的意思,而是隐式转换成的字符'/0'——值为0的char字符。在C/C++的一般实现中,这样的行为(值为0的数值类型,无论是void*或int,转换为char的值还是0)是明确的,但这种用法并不恰当。一如LS的错误,ASCII及兼容字符集中数值0对应的字符为null character(null terminator),应该用NUL(没有在标准库中定义,语言中char类型用'/0',wchar_t类型用L'/0')而不是NULL表示。NUL的一个重要应用是作为C风格字符串的结尾标志字符。
全部回答
- 1楼网友:舊物识亽
- 2021-02-22 13:10
搜一下:C++ vs 编译,帮我看看为什么显示值不能为null
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯