大话2免费版切修正:请教:c++问题!

来源:百度文库 编辑:高校问答 时间:2024/04/29 07:55:31
#include <iostream>
using namespace std;
int main()
{cout<<sizeof("ab\034\\\x79")<<endl;
return 0;
}运行的结果是 6
但有一个题目:
字符串"ab\034\\\x79"的长度是___?
答案是 5
请问各位高手 是怎么回事啊?
谢谢啦!
#include <iostream>
using namespace std;
int main()
{cout<<sizeof(\"ab\\034\\\\\\x79\")<<endl;
return 0;
}
我把回答者:fat_june - 见习魔法师 三级的意见采用了一下
改正如上的程序 但 有三个错误 一阁警告 !
不知道是怎么回事啊

{cout<<sizeof("ab\034\\\x79")<<endl;
显示这个字符串的所占用的内存字节数,等于6,理由如下:
ab\034\\\x79
a..........1
b..........2
\034.......3 是一个8进制数
\\.........4 转义符,表示一个\
\x79.......5 是一个十六进制数
\0.........6 不要忘记最后还有字符串结束符。
字符串"ab\034\\\x79"的长度是指从头开始到首先出现的
字符串结尾符'\0'止,所有字符的个数(不包括该'\0')
所以为5

c++默认对每个字符串都加上一个\'\\0\',不管原本字符串中有没有\'\\0\'都是这样.

sizeof()函数是计算占用内存多少的,\"ab\\034\\\\\\x79\"实际上是\"ab\\034\\\\\\x79\\0\" 占用6个字节,所以
sizeof(\"ab\\034\\\\\\x79\")等于6
sizeof(\"\")等于1
sizeof(\"\\0asdf\")等于6
cout<<\"\\0asdf\"<<endl; 只显示回车(endl)
sizeof(\'\\0\')等于1

在C++中串的结束符是一个不显示的“\0”,例如字符串“abc”实际上在编译时被认为是“abc\0”,所以串长应为4。
对于你所说的那道题我认为是说法不严密,以你所给的答案来说应该问“该串有效字符个数为_____”。

串的长度是5个字符,占用存储空间6个字节