wht666 发表于 2020-12-18 00:25:04

字符串占多少字节的问题

求助大佬
一个字符串是怎么看他占多少个字节的,英文和中文字符分别是占多少,还有就是字符串数组怎么看多少字节
比如 char [] a={"aaa","bbbb"}
还有就是string [] b={"aaa","bbbb"}
这两个不同类型的,对应占的字节应该也不一样吧,一个是char数组,一个是string数组

wht666 发表于 2020-12-18 10:19:00

各位大佬,麻烦解答一下呀

jackz007 发表于 2020-12-18 10:51:16

本帖最后由 jackz007 于 2020-12-18 11:01 编辑

      确定字符串占用多少字节用 strlen() 就可以,但必须是单个字符串,如果参数是包含 1 个以上字符串的字符串数组,那么返回的是第一个字符串的长度(字节),这个数值是随着字符串内容的改变而动态变化的。
      如果想知道字符数组 a 总共占用了多少字节,用 sizeof(a),这个数值是在程序编译的时候,根据当时变量定义所确定的,只和字符串数组的原始内容有关,如果字符串在程序运行中改变,sizeof(a) 的数值不会改变。也就是说,sizeof(a) 不是字符串占用的字节数。而是字符数组 a 中最大能够容纳的字符数,这个数值在程序编译过后就固定不变了。

wht666 发表于 2020-12-18 11:18:33

jackz007 发表于 2020-12-18 10:51
确定字符串占用多少字节用 strlen() 就可以,但必须是单个字符串,如果参数是包含 1 个以上字符串 ...

我还不是很懂,大佬帮我看看这题吧,怎么看他占的字节大小

笨鸟学飞 发表于 2020-12-18 14:53:34

字符串默认是以\0结尾的
所以
"public"--->7
"static"--->7
"void"   --->5
"main(String[]args)"--->19
一共38

笨鸟学飞 发表于 2020-12-18 14:54:40

初学。解释的可能不是那么清晰,可以参考
https://www.cnblogs.com/x_wukong/p/5916370.html

wht666 发表于 2020-12-18 18:44:50

笨鸟学飞 发表于 2020-12-18 14:53
字符串默认是以\0结尾的
所以
"public"--->7


char数字存字符串我知道是这样呀,这个是string,答案是66

wht666 发表于 2020-12-18 18:48:09

笨鸟学飞 发表于 2020-12-18 14:53
字符串默认是以\0结尾的
所以
"public"--->7


这是我一个朋友问我的,我也答不出来,反正他说答案是66。这string数组存的是引用数据类型吧,不是char数组这样的基本数据类型吧,所以我就不是很清楚每个对应多少个字节了,这个题好像是java的

405794672 发表于 2020-12-18 19:22:45

aaa,你看到有三个a,这是英文,它占三个字节,然后由于是字符串,还要占一个字节来表示它是字符串,所以它占四个字符。而汉字一般占两个字节
还有你的两个数组确实不一样,所以里面的内容肯定不一样,所以你肯定有一个是错的

char[]数组就是错的,它只能表示一个字符串。你要它表示两个字符串,和string一样,那么,得char[][].
这两个方括号好像有一个不能为空,必须要给值,这个我记不太清楚了

wht666 发表于 2020-12-18 20:58:29

405794672 发表于 2020-12-18 19:22
aaa,你看到有三个a,这是英文,它占三个字节,然后由于是字符串,还要占一个字节来表示它是字符串,所以它 ...

哦,对char数组有要用二维的才能存多个字符串,忘了。char的东西我基本都知道,其实我是想知道string的内存是怎么算的

782353676 发表于 2020-12-19 10:42:03

c语言中可以在函数库#include <string.h>中调用strlen();函数测量一个字符串的真实长度(不包括字符串末尾的\0).

405794672 发表于 2020-12-19 19:11:17

wht666 发表于 2020-12-18 20:58
哦,对char数组有要用二维的才能存多个字符串,忘了。char的东西我基本都知道,其实我是想知道string的内 ...

我不是太清楚。这样跟你说吧,如果用双引号,那么,它代表的不是具体的值,而是一个地址。引用的时候,传过去的是一个地址,里面的字符就在这个地址里存着,所以字符串才可以随意长度。如果这是char[][]数组,我可以很肯定地说"XXX","XXXXXXXX",一共有两个地址,所以它占32位。两个16位嘛。至于string数组有什么特殊的制式我就不知道了,
页: [1]
查看完整版本: 字符串占多少字节的问题