我需要知道这个数组会占用多少字节数:
char s[10] = "test";
由于"test" + "\0"
会不会是10字节或5字节?
答案 0 :(得分:2)
只是为了清楚一点
char s[10] = "test";
此处s
将占用10个字节,因为您已明确提供了大小。
OTOH,像
这样的定义 char s[ ] = "test";
s
将占用5个字节,因为数组的大小将根据提供的初始化程序确定(4个元素加上一个空终止符。)
如果是char
数组,第二个被认为是更好的方法,有时它可以通过在定义大小时忘记计算空终止符的空间来避免麻烦。 / p>
考虑一下情景,
char arr[5] = "Hello";
此处,arr
的大小为5,不 null终止。但是如果你使用
char arr[ ] = "Hello";
编译器将自动确定包括空终止符的大小。因此,arr
的大小为6,并包含空终止符。
答案 1 :(得分:0)
在你的问题中,事实上有两个不同的问题。第一个对应于原始问题的标题
字符串占用多少字节,初始化为较少字母
,第二个是原始问题的正文
此数组占用的字节数:
char s[10] = "test";
第一个问题的答案听起来像字符串恰好占据了数组的5个元素。这就是字符串占用数组的以下元素
s[0] = 't', s[1] = 'e', s[2] = 's', s[3] = 't', s[4] = '\0'
范围[5, 9]
中数组的所有其他字符将初始化为零'\0'
第二个问题的答案听起来像数组的大小恰好等于10 * sizeof( char )
的{{1}},因为10 bytes
始终等于sizeof( char )
如果你要改为写
1
那么数组的大小将等于字符串文字的大小(包括终止零),即5个字符。