A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 每天进步一点点 中级黑马   /  2014-6-6 17:49  /  1729 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 每天进步一点点 于 2014-6-6 21:45 编辑

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

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

7 个回复

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

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


评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报 2 0
这里涉及到了正则表达式,\0单独的意思是将0转意了,但是写在语句中的话,需要多加一个斜杠,\\0,可能不是米要的答案!呵呵!
回复 使用道具 举报
XCodeRush 发表于 2014-6-6 20:04
看起来是,其实也算是,只不过'\0'后面的k对于字符串函数来说不可见,只有天知地知
和编写这段代码的人知道 ...

哈哈!数据隐藏!太搞了。。。{:2_40:}
回复 使用道具 举报
是字符串,但一般不怎样写
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个字节
希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
天空角落 发表于 2014-6-6 20:50
哈哈!数据隐藏!太搞了。。。

{:3_67:}{:3_67:}{:3_67:}{:3_67:}{:3_67:}{:3_67:}
回复 使用道具 举报
XCodeRush 发表于 2014-6-6 20:04
看起来是,其实也算是,只不过'\0'后面的k对于字符串函数来说不可见,只有天知地知
和编写这段代码的人知道 ...

谢谢,受益了
回复 使用道具 举报
黄莉萍 发表于 2014-6-6 21:06
是字符串,但一般不怎样写
1.用strlen()函数计算结果是3,因为strlen函数计算的是字符数,从某个地址开始数 ...

谢谢,收益了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马