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

如题所述

将所有字符的总数最后再加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

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

温馨提示:答案为网友推荐,仅供参考
相似回答