Null是零还是啥,怎么不能给string赋值为null,只能赋值为“”

shiter
人工智能领域优质创作者
博客专家认证
2015-05-19 05:12:36
Null是零还是啥,怎么不能给string赋值为null,只能赋值为“”
...全文
1944 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
""就是仅包含一个'\0'字符。
幻夢之葉 2015-05-20
  • 打赏
  • 举报
回复
#ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) NULL指针值为0,表示指向空内存 “” 这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已 而NULL相当于钱包都没有
CyberLogix 2015-05-20
  • 打赏
  • 举报
回复
引用 9 楼 jianwen0529 的回复:
#ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) NULL指针值为0,表示指向空内存 “” 这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已 而NULL相当于钱包都没有
这个解释很合理,C/C++中NULL就是0,一般用来表示空指针; Java语言中的null是可以赋值给string类型的,用来表示空字符串,呵呵
youjun610789338 2015-05-20
  • 打赏
  • 举报
回复
引用 5 楼 wangyaninglm 的回复:
[quote=引用 2 楼 youjun610789338 的回复:] [quote=引用 1 楼 youjun610789338 的回复:] 0、’\0’、空格、null的区别 字符 十进制 十六进制 Null 0 00 空字符(等于’\0’) ‘\0’ 0 00 字符串结束标识符 0 48 30 字符0 Space 32 20 空格
没写完,手贱给提交了。。。。

字符		十进制		十六进制
Null		        0				00			空字符(等于’\0’)
‘\0’			0				00			字符串结束标识符
0			48				30			字符0
Space		32				20			空格
null对应的ascii就是0,空格对应的ascii是32,两者是不一样的哦 [/quote] 空格应该跟空字符串不同吧[/quote] 哦,我看错了,你是赋“”,我看成“ ”了。。。 那两者是不同的,“”就等于没内容," "是一个字符! 赋NULL是不行的,会触发断言!
shiter 2015-05-20
  • 打赏
  • 举报
回复
引用 12 楼 jianwen0529 的回复:
[quote=引用 11 楼 wangyaninglm 的回复:] [quote=引用 9 楼 jianwen0529 的回复:] #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) NULL指针值为0,表示指向空内存 “” 这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已 而NULL相当于钱包都没有
""这个东西怎么表示,在内存里面?或者asc吗,或者unicode有没有值能表示[/quote] 这个字符串在内存中是有字符的啊 C风格的字符串是以'/0' 结束 比如 'abcd‘ 你至少需要5个char存储,因为后面隐藏了 \0 这个字符(结束符) 所以空串相当于 "/0" [/quote]
幻夢之葉 2015-05-20
  • 打赏
  • 举报
回复
引用 11 楼 wangyaninglm 的回复:
[quote=引用 9 楼 jianwen0529 的回复:] #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) NULL指针值为0,表示指向空内存 “” 这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已 而NULL相当于钱包都没有
""这个东西怎么表示,在内存里面?或者asc吗,或者unicode有没有值能表示[/quote] 这个字符串在内存中是有字符的啊 C风格的字符串是以'/0' 结束 比如 'abcd‘ 你至少需要5个char存储,因为后面隐藏了 \0 这个字符(结束符) 所以空串相当于 "/0"
shiter 2015-05-20
  • 打赏
  • 举报
回复
引用 9 楼 jianwen0529 的回复:
#ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) NULL指针值为0,表示指向空内存 “” 这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已 而NULL相当于钱包都没有
""这个东西怎么表示,在内存里面?或者asc吗,或者unicode有没有值能表示
xiaohuh421 2015-05-20
  • 打赏
  • 举报
回复
楼主是把Java中的null习惯带过来了吧.... C++中 在早期版本中并没有null这个关键字, 它是一个常量整型数据, 被定义为0 而string 是一个类, 它的对象只接受字符相关的参数, 不接受0 所以如此.
shiter 2015-05-19
  • 打赏
  • 举报
回复
引用 7 楼 zxh707wk 的回复:
引用 4 楼 zhao4zhong1 的回复:
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
+1,vc++同样适用
""这个可以么?
707wk 2015-05-19
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
+1,vc++同样适用
  • 打赏
  • 举报
回复
那个是标准库的限制,赋空指针会有断言报错。确实是严了一点,用起来不太方便,遇到向标准库字串赋值时总要做容错处理,没办法。 PS:LS哥几个,建议针对LZ的问题点作答,随处都当作讲堂这不太好吧,炫技就更不好了
shiter 2015-05-19
  • 打赏
  • 举报
回复
引用 2 楼 youjun610789338 的回复:
[quote=引用 1 楼 youjun610789338 的回复:] 0、’\0’、空格、null的区别 字符 十进制 十六进制 Null 0 00 空字符(等于’\0’) ‘\0’ 0 00 字符串结束标识符 0 48 30 字符0 Space 32 20 空格
没写完,手贱给提交了。。。。

字符		十进制		十六进制
Null		        0				00			空字符(等于’\0’)
‘\0’			0				00			字符串结束标识符
0			48				30			字符0
Space		32				20			空格
null对应的ascii就是0,空格对应的ascii是32,两者是不一样的哦 [/quote] 空格应该跟空字符串不同吧
赵4老师 2015-05-19
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
tangtangtangbaoli 2015-05-19
  • 打赏
  • 举报
回复
Null 一般预编译宏命令都是定义为0 这个没啥好说的 也可以自己#define NULL 1000 当然肯定冲突 string 赋值"",本质就是赋值一个字符串指针地址,而地址也是数值 你也可以写成0x0000000,当然拿他当初始值肯定就要出错了!
youjun610789338 2015-05-19
  • 打赏
  • 举报
回复
引用 1 楼 youjun610789338 的回复:
0、’\0’、空格、null的区别 字符 十进制 十六进制 Null 0 00 空字符(等于’\0’) ‘\0’ 0 00 字符串结束标识符 0 48 30 字符0 Space 32 20 空格
没写完,手贱给提交了。。。。

字符		十进制		十六进制
Null		        0				00			空字符(等于’\0’)
‘\0’			0				00			字符串结束标识符
0			48				30			字符0
Space		32				20			空格
null对应的ascii就是0,空格对应的ascii是32,两者是不一样的哦
youjun610789338 2015-05-19
  • 打赏
  • 举报
回复
0、’\0’、空格、null的区别 字符 十进制 十六进制 Null 0 00 空字符(等于’\0’) ‘\0’ 0 00 字符串结束标识符 0 48 30 字符0 Space 32 20 空格

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧