首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于字符数组的有关问题

2012-04-02 
关于字符数组的问题当定义charsp[] \x69\082\n 时printf( %d ,strlen(sp))的结果是1可是当charsp[]

关于字符数组的问题
当定义char   sp[]= "\x69\082\n "时
printf( "%d ",strlen(sp));的结果是1
可是当char   sp[]= "\x69\072\n ";时
结果是3.
为什么第一句话里面\0是结束符,可是在第二句话里面不是呢?

[解决办法]
当定义char sp[]="\x69\082\n"时 数组sp共占6个字节.
\x69 \0 8 2 \n \0

这里的第一个问题是8进制数所能使用的最大数是7,所以就像1楼兄弟说的那样此时\0会单独成为一个字符.用strlen函数求sp长度时在第2个字节中先遇到\0所以strlen函数就会当作该字符串已结束.在strlen眼里此时sp是由两个字节的内容组成\x69 与 \0.且因为strlen函数并不把\0计算成字符串的长度.所以得出该值为1.

可是当char sp[]="\x69\072\n";时 数组中的内容共占4个字节.

\x69 \072 \n \0

同上面的理由因为strlen函数并不把\0计算在字符长度内,所以该strlen值为3...

热点排行