黑马程序员技术交流社区

标题: 问一个字符串的问题 [打印本页]

作者: 每天进步一点点    时间: 2014-6-6 17:49
标题: 问一个字符串的问题
本帖最后由 每天进步一点点 于 2014-6-6 21:45 编辑

例char []="jac\0k";(里面为\0)
请问双引号里面这个还叫字符串吗,如果是,那他的长度是多少

作者: XCodeRush    时间: 2014-6-6 20:04
看起来是,其实也算是,只不过'\0'后面的k对于字符串函数来说不可见,只有天知地知
和编写这段代码的人知道(天哪!这不就是传说中的数据隐藏嘛!{:3_64:})。
用strlen()函数计算结果是3
用sizeof()函数计算的结果是6,因为系统会在'k'字符的后面添加一个'\0',这样的话,
字符串数组所占的字节就是6个了。

希望我的回答能够帮助到你。



作者: 相濡、彼岸    时间: 2014-6-6 20:06
这里涉及到了正则表达式,\0单独的意思是将0转意了,但是写在语句中的话,需要多加一个斜杠,\\0,可能不是米要的答案!呵呵!
作者: 天空角落    时间: 2014-6-6 20:50
XCodeRush 发表于 2014-6-6 20:04
看起来是,其实也算是,只不过'\0'后面的k对于字符串函数来说不可见,只有天知地知
和编写这段代码的人知道 ...

哈哈!数据隐藏!太搞了。。。{:2_40:}
作者: 黄莉萍    时间: 2014-6-6 21:06
是字符串,但一般不怎样写
1.用strlen()函数计算结果是3,因为strlen函数计算的是字符数,从某个地址开始数字符的个数,直到遇见\0为止,且不包含\0。所以char[]="jac\0k"这个字符串只计算了'j','a','c'这3个字符遇到'\0'就输出了,而后面字符'k','\0'就没参与计算了
2.用sizeof()函数计算结果是6,因为sizeof函数计算的是字符数组所占内存的字节数,且\0也是一个字节。而字符串以\0结尾,所以字符'k'后面还隐藏了'\0'这个字符,所以内存分配字节是'j','a','c','\0','k','\o',占用了6个字节
希望能帮到你

作者: XCodeRush    时间: 2014-6-6 21:10
天空角落 发表于 2014-6-6 20:50
哈哈!数据隐藏!太搞了。。。

{:3_67:}{:3_67:}{:3_67:}{:3_67:}{:3_67:}{:3_67:}
作者: 每天进步一点点    时间: 2014-6-6 21:42
XCodeRush 发表于 2014-6-6 20:04
看起来是,其实也算是,只不过'\0'后面的k对于字符串函数来说不可见,只有天知地知
和编写这段代码的人知道 ...

谢谢,受益了
作者: 每天进步一点点    时间: 2014-6-6 21:44
黄莉萍 发表于 2014-6-6 21:06
是字符串,但一般不怎样写
1.用strlen()函数计算结果是3,因为strlen函数计算的是字符数,从某个地址开始数 ...

谢谢,收益了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2