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

C++语言 码拜 10年前 (2015-05-11) 2265次浏览 0个评论
 

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

5分
0、’\0’、空格、null的区别
字符 十进制 十六进制
Null         0 00 空字符(等于’\0’)
‘\0’ 0 00 字符串结束标识符
0 48 30 字符0
Space 32 20 空格
引用 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,两者是不一样的哦

5分
Null 一般预编译宏命令都是定义为0 这个没啥好说的 也可以自己#define NULL 1000 当然肯定冲突
string 赋值””,本质就是赋值一个字符串指针地址,而地址也是数值 你也可以写成0x0000000,当然拿他当初始值肯定就要出错了!

VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
引用 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,两者是不一样的哦

空格应该跟空字符串不同吧

5分
那个是标准库的限制,赋空指针会有断言报错。确实是严了一点,用起来不太方便,遇到向标准库字串赋值时总要做容错处理,没办法。

PS:LS哥几个,建议针对LZ的问题点作答,随处都当作讲堂这不太好吧,炫技就更不好了

5分
引用 4 楼 zhao4zhong1 的回复:

VS IDE中,在不明白的符号上点鼠标右键,选转到定义。

+1,vc++同样适用

引用 7 楼 zxh707wk 的回复:
Quote: 引用 4 楼 zhao4zhong1 的回复:

VS IDE中,在不明白的符号上点鼠标右键,选转到定义。

+1,vc++同样适用

“”这个可以么?

5分
#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)

NULL指针值为0,表示指向空内存

“”  这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已
而NULL相当于钱包都没有

5分
楼主是把Java中的null习惯带过来了吧….

C++中   在早期版本中并没有null这个关键字, 它是一个常量整型数据, 被定义为0
而string 是一个类, 它的对象只接受字符相关的参数,  不接受0
所以如此.

引用 9 楼 jianwen0529 的回复:

#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)

NULL指针值为0,表示指向空内存

“”  这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已
而NULL相当于钱包都没有

“”这个东西怎么表示,在内存里面?或者asc吗,或者unicode有没有值能表示

5分
引用 11 楼 wangyaninglm 的回复:
Quote: 引用 9 楼 jianwen0529 的回复:

#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)

NULL指针值为0,表示指向空内存

“”  这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已
而NULL相当于钱包都没有

“”这个东西怎么表示,在内存里面?或者asc吗,或者unicode有没有值能表示

这个字符串在内存中是有字符的啊
C风格的字符串是以””/0″” 结束
比如  “”abcd‘ 你至少需要5个char存储,因为后面隐藏了 \0 这个字符(结束符)

所以空串相当于 “/0” 

引用 12 楼 jianwen0529 的回复:
Quote: 引用 11 楼 wangyaninglm 的回复:
Quote: 引用 9 楼 jianwen0529 的回复:

#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)

NULL指针值为0,表示指向空内存

“”  这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已
而NULL相当于钱包都没有

“”这个东西怎么表示,在内存里面?或者asc吗,或者unicode有没有值能表示

这个字符串在内存中是有字符的啊
C风格的字符串是以””/0″” 结束
比如  “”abcd‘ 你至少需要5个char存储,因为后面隐藏了 \0 这个字符(结束符)

所以空串相当于 “/0” 

5分
引用 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,两者是不一样的哦

空格应该跟空字符串不同吧

哦,我看错了,你是赋“”,我看成“ ”了。。。

那两者是不同的,“”就等于没内容,” “是一个字符!

赋NULL是不行的,会触发断言!

引用 9 楼 jianwen0529 的回复:

#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)

NULL指针值为0,表示指向空内存

“”  这个只是0个字符的字符串,就比如有钱包,只是里面没钞票而已
而NULL相当于钱包都没有

这个解释很合理,C/C++中NULL就是0,一般用来表示空指针;
Java语言中的null是可以赋值给string类型的,用来表示空字符串,呵呵

“”就是仅包含一个””\0″”字符。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Null是零还是啥,怎么不能给string赋值为null,只能赋值为“”
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!