首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么字符串的字节大小比长度长?

为什么字符串的字节大小比长度长?
EN

Stack Overflow用户
提问于 2013-06-04 05:08:21
回答 2查看 334关注 0票数 11

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

既然字符串的长度是4个字符(4 x 1),那么sizeof("Bill")不应该是4吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-04 05:08:57

C字符串以null结尾。在该字符串的末尾有一个零字节。假设使用ASCII码,"Bill"在内存中如下所示:

代码语言:javascript
运行
复制
'B'  'i'  'l'  'l'  '\0'
0x42 0x69 0x6c 0x6c 0x00

来自C标准,第6.4.5节字符串文字,第7段:

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

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

如果你真的不想要空结束符,那也是可能的,尽管可能是不明智的。此定义如下:

代码语言:javascript
运行
复制
char bill[4] = "Bill";

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

票数 22
EN

Stack Overflow用户

发布于 2013-06-04 05:09:04

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16905877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档