c/c++开发分享为什么字符串的字节大小比长度长?

为什么sizeof("Bill")5sizeof(char)1

不应该使sizeof("Bill")4因为字符串的长度是4个字符( 4 x 1 )?

我相信它可能与"Bill"是一个字符数组有关,但为什么会增加字节大小?

    C字符串以空值终止。 该字符串末尾有一个零字节。 假设ASCII, "Bill"在内存中看起来像这样:

     'B' 'i' 'l' 'l' '' 0x42 0x69 0x6c 0x6c 0x00 

    从C标准,第6.4.5字符串文字 ,第7段:

    在转换阶段7中,将值0的字节或代码附加到由字符串文字或文字产生的每个多字节字符序列。

    如果你想得到长度为4的答案,你应该使用strlen("Bill") ,而不是sizeof

    如果你真的不想要null终结符,那也是可能的,尽管可能是不明智的。 这个定义:

     char bill[4] = "Bill"; 

    将产生一个4字节的数组, bill包含字符'B''i''l''l' ,没有空终止符。

    它有一个0作为终止符,所以它的B ill 0

      以上就是c/c++开发分享为什么字符串的字节大小比长度长?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545994.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注