C++的字符数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 15:03:02
char sp[]="\x69\082\n";
cout<<strlen(sp);
输出的结果是1,但为什么?字符数组只占一个字节吗?

首先,strlen()的判断是读取一输入流,判断当前字符是否与结束标志“\0”相等,\x69表示转义字符,68所对应的ascii码,到\0就不读了,所以为1

\082 这是什么意思?

字符串里的转义接数字只有两种形式,要么 \x接16进制的两个字,要么\接8进制的3个字

如dingtang2008讲的那样
\082很有迷惑性,如果8换成0-7中间一个数字的话,譬如\072,那就是表示一个8进制数了

你哪字符串里有个\0,你注意到没,是个结束标志,也就是说你实际在数组里只存了一个字符 ,还有strlen这个函数是计算数组元素个数的和占字节数没关系,要算字节数要用sizeof()