字符串常量在内存中存储是占的单元数怎么算?
将所有字符的总数最后再加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
当然,可能还有其它的表示法。使用树和列表可以使得一些字符串操作(如插入和删除)更高效。
示例程序:
#include <iostream>
#define STR "ads"
using namespace std;
int main()
{
char s[] = "asdf";
cout << sizeof(s) << endl;
cout << sizeof(STR) << endl;
return 0;
}
char型字符构成的字符串,如:
"Hello12345",共10个字符,但是因为最后还有一个隐含的'\0'用来标志结尾,所以共占11个字节。
PC机中,1个字节(Byte,简写B)中含8bit,所谓bit就是可以存储0或者1的基本存储单元。
此乃正解,另外你如果想知道
bytes
8bytes=1B
1024B=1KB
1024KB=1MB