sizeof计算的是类型的长度。你的代码中,sizeof算出来的是char*的类型,即指针的类型。你的电脑是32位的(win7或xp)吧?32位系统中,指针的存储空间是四个字节。所以sizeof(s1)=4.
strlen算的不是到空格位置,而是到'\0'为止,不含'\0'。这个是
字符串的结束标志。在s1中,
”
hello world“恰好是11个字符吧(空格也算,但是最后的‘\0’就不算了)。
移明白了么?
追问为什么cin>>''hello world''的话,strlen为5呀
追答标准输入流对象cin,当出现分隔符,空白符等控制符时默认当前输入结束。你输入的“hello world",所以cin会截取到"hello"后就结束了。正好是5个有效字符
本回答被提问者采纳