为什么sizeof为4strlen为11.strlen不是计算到空格吗?为什么strlen不是5

如题所述

第1个回答  2013-12-26
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个有效字符

本回答被提问者采纳
相似回答