sizeof("") 和strlen("")的结果
前者是1,后者是0
什么原因?
再问个事情,为什么刚发的帖子,是404,怎么回事??
[解决办法]
这要说到字符串常量的字面值了,一个字符串必然以'\0'元素结尾。
"" 它是一个字符串常量,实际上,它的字面值同于 {'\0'}这个字符数组
换句话说,""本身并不是什么都有的,而是包含了一个'\0'元素的字符数组
同样地,"str" 等同于 {'s','t','r','\0'}
sizeof()函数返回的这个长度,就是 {'\0'}这个字符数组的长度,自然,是1
而strlen()函数,是以string字符串为参数的一个全局函数,它返回的值,是除了这个尾部元素‘\0’以外其它元素的个数,自然是0
[解决办法]
"" 值是 "\0"
\0其实是string结束的符号
也就是只占一个内存地址
sizeof返回所占内存地址也就是1byte
strlen返回真实string所占的值就是0
[解决办法]
是否计算字符串结束符\0
[解决办法]
"" 值是 "\0"
\0其实是C语言字符串结束的符号,也就是只占一个内存地址。
sizeof返回所占内存地址也就是1byte
strlen返回真实字符串的长度,但是不包括‘\0’,所以其的值就是0
[解决办法]
楼上关于sizeof和strlen讲的都很好了,我就说下404吧
404是CSDN自己的问题,公司服务器在升级,从即日起到2月24日,服务器不稳定,所以会出现这种情况。。。。
[解决办法]
sizeof(""); //计算时有一个 '\0' ,要算上,所以是1
strlen(""); //计算时有一个 '\0' 但是它算的是字符串长度,不加'\0' ,所以是0
[解决办法]
第一个占用内存一个字节
第二个计算这个字符串的长度
[解决办法]
[解决办法]
[解决办法]
"",是一个字符串常量,它在内存中表示为一个BYTE,内容是0
sizeof是关键字,返回的是它所占用的字节数
strlen是标准C函数,返回的是字符串长度,就是0前有多少个char
[解决办法]
字符串后都有'\0'
没有,就不能正常输出,因为没结束的地方
但这个符号也占一定空间
string str="";
系统默认都加上了
所有size是有实际的大小的
但字符串长度却是0的,因为\0是不可见的,不计算在内