字符串常量在内存中存储是占的单元数怎么算?

 我来答
蓝雪儿老师
高能答主

2020-08-02 · 愿千里马,都找到自己的伯乐!
蓝雪儿老师
采纳数:266 获赞数:85192

向TA提问 私信TA
展开全部

将所有字符的总数最后再加1,因为字符串最后会有个'\0',这是系统自动加上的。由于字符占的内存单元数为1byte,所以这样计算。如果有汉字,就要对应汉字乘以2,因为汉字占2个字节。

char型字符构成的字符串。

如:"Hello12345",共10个字符,但是因为最后还有一个隐含的'\0'用来标志结尾,所以共占11个字节。PC机中,1个字节(Byte,简写B)中含8bit,所谓bit就是可以存储0或者1的基本存储单元。

扩展资料:

一种常用的表示法是使用一个字符代码的数组,每个字符占用一个字节(如在ASCII代码中)或两个字节(如在unicode中)。它的长度可以使用一个结束符(一般是NUL,ASCII代码是0,在C编程语言中使用这种方法)。或者在前面加入一个整数值来表示它的长度(在Pascal语言中使用这种方法)。

这是一个用NUL结束的字符串的例子,它用10个byte存储,用ASCII表示法:

F R A N K NUL k e f w;46 52 41 4E 4B 00 6B 66 66 77

上面的字符串的长度为5个字符,但注意它占用6个字节。结束符后的字符没有任何意义。

这是相同的Pascal字符串:

length F R A N K k e f w;05 46 52 41 4E 4B 6B 66 66 77

当然,可能还有其它的表示法。使用树和列表可以使得一些字符串操作(如插入和删除)更高效。

maxlovesyt
2011-03-22 · TA获得超过420个赞
知道答主
回答量:79
采纳率:0%
帮助的人:75.9万
展开全部
就是将所有字符的总数最后再加1,因为字符串最后会有个'\0',这是系统自动加上的。由于字符占的内存单元数为1byte,所以这样计算。如果有汉字,就要对应汉字乘以2,因为汉字占2个字节。
示例程序:
#include <iostream>
#define STR "ads"
using namespace std;

int main()
{
char s[] = "asdf";
cout << sizeof(s) << endl;
cout << sizeof(STR) << endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mrytsr
推荐于2018-03-23 · TA获得超过1364个赞
知道小有建树答主
回答量:1317
采纳率:0%
帮助的人:1080万
展开全部
某咸鱼在误导人……
char型字符构成的字符串,如:
"Hello12345",共10个字符,但是因为最后还有一个隐含的'\0'用来标志结尾,所以共占11个字节。
PC机中,1个字节(Byte,简写B)中含8bit,所谓bit就是可以存储0或者1的基本存储单元。

此乃正解,另外你如果想知道
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2011-03-22 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4591万
展开全部
"China"占6个字节,最后一个字节存放'\0'字符,表示字符串结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
进击的栗鼠s
2011-03-22 · TA获得超过383个赞
知道小有建树答主
回答量:701
采纳率:0%
帮助的人:413万
展开全部
字节

bytes

8bytes=1B

1024B=1KB

1024KB=1MB
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式