liujiawen 发表于 2023-11-9 17:23:24

这个为啥是18个字节啊

这18个字节分别是I,L,O,V,E,F,I,S,H,C,.,C,O,M,!,",",/0,吗

isdkz 发表于 2023-11-9 17:23:46

这个字符串包含了18个字节。每个字符在内存中占用一个字节的空间。根据ASCII编码规则,英文字母、数字和一些特殊字符都被编码为一个字节。所以,这个字符串中的每个字符都占用一个字节的空间。

具体来说,I、L、O、V、E、F、I、S、H、C、.、C、O、M、!、"、"、/0 这些字符都是ASCII字符,每个字符占用一个字节的空间。而中文字符通常使用Unicode编码,一个中文字符通常占用两个字节的空间。所以,这个字符串中的各个字符加起来总共占用了18个字节的空间。

虚无→与→飘渺 发表于 2023-11-9 18:28:37

本帖最后由 虚无→与→飘渺 于 2023-11-9 18:29 编辑

双引号“”是字符串起止标志,不包含在字符串内容里,自然也就不占用内存空间,但是字符串中的两个空格各占用1个字节,所以一共是18个字节
即:I---空格---l---o---v---e---空格---F---i---s---h---C---.---c---o---m---!---\0
共18个字节

jackz007 发表于 2023-11-9 19:42:21

       C 语言用于标识一个字符串结束的唯一标志是字符串末尾处的字节 '\0',就是说,C 语言的每一个字符串都一定有一个被 "额外" 附加到字符串末尾的特殊字符 '\0'。
       没错,字符串 "I love FishC.com!" 的确只有 17 个字符,但是,这个字符串必须要有一个结束字符 '\0' 也需要占用一个字节,所以,这个字符串的确占用的是 18 个字节。

歌者文明清理员 发表于 2023-11-9 20:52:44

看图:

tomok 发表于 2023-11-10 14:35:18

4 楼 正解

妖娆乌龙茶 发表于 2023-11-10 14:57:21

学到后面会明白,要分清是sizeof(尺寸,即需要挖坑的数量) 还是strlen(长度)。sizeof是考虑了最后的\0,表示字符串的结束; strlen不包括\0

第一次解答问题希望能给个最佳答案!
页: [1]
查看完整版本: 这个为啥是18个字节啊