www.rtmj.net > 字符串的存储空间

字符串的存储空间

"a"要占用2个字节.因为系统会加上一个'\0'的结束符在a的后面.'a'就占用一个字节.'a'是字符常量.

a,b,\t,\\,0,2,9,七个字节 \n,\17,9,\t,\\,1,2,3,八个字节

"a"要占用2个字节.因为系统会加上一个'\0'的结束符在a的后面.'a'就占用一个字节.'a'是字符常量.

储存空间字节数是 11.abc -- 3 个 \\ -- 1个 转义字符 nt -- 2 个 \012 -- 1个 8进制数 \xa1 -- 1个 16进制数*2 -- 2 个 还有一个字符串结束符. 共 11 字节.char str[]="abc\\nt\012\xa1*2"; printf("%d %d\n",strlen(str),sizeof(str) ); // 打印字符串长度,打印占储存空间字节数

7字节,其实是7bytes不是7Bytes.8bytes=1Bytes.

1.字符型数据在内存中储存的是它的ASCII码值,它是一个字节,所有数据类型在内存中都是以0和1代码二进制储存的,这个原则不会变.2.字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!#¥%……*()+

string 是动态分配内存的好像 如果大小不够的话他会追加字符串汉字占两个字节其他占一个字节

指针是地址 在32位机里所有指针都是4个字节64位机里是8个字节

char *str[m]这是定义了一个字符指针数组str,即str数组的每个元素都是一个指针,可以指向一个char地址.系统为它分配m个sizeof(int)长度的空间.char str[m][n]这是定义了一个二维字符数组,可以存储m*n个字符,系统为它分配m*n个sizeof(char)长度的空间.

你的字符串数组是什么样的,贴出来看看,不知道你的元素类型string是类,它的大小是16字节一般通常说的字符串是char *,它的大小是4字节所以让你说清楚,否则怎么可能知道?@@-----为什么能支持可变长度呢?--------因为string类的成员变量有一个字符串char *型的指针,指向它的内容字符串,这块字符串所在的内存并不在这16字节里,而是其他地方,所以无论多长都OK.

网站地图

All rights reserved Powered by www.rtmj.net

copyright ©right 2010-2021。
www.rtmj.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com