为什么sizeof("Bill")是5而sizeof(char)是1
既然字符串的长度是4个字符(4 x 1),那么sizeof("Bill")不应该是4吗?
我认为这可能与"Bill"是一个字符数组有关,但为什么这会增加字节大小?
发布于 2013-06-04 05:08:57
C字符串以null结尾。在该字符串的末尾有一个零字节。假设使用ASCII码,"Bill"在内存中如下所示:
'B' 'i' 'l' 'l' '\0'
0x42 0x69 0x6c 0x6c 0x00来自C标准,第6.4.5节字符串文字,第7段:
在转换阶段7中,将值为零的字节或代码附加到由字符串文字或文字产生的每个多字节字符序列。
如果想要得到长度为4的答案,则应该使用strlen("Bill"),而不是sizeof。
如果你真的不想要空结束符,那也是可能的,尽管可能是不明智的。此定义如下:
char bill[4] = "Bill";将生成一个只包含字符'B'、'i'、'l'和'l'的4字节数组bill,没有空终止符。
发布于 2013-06-04 05:09:04
它有一个0作为终止符,所以它的B i l l 0
https://stackoverflow.com/questions/16905877
复制相似问题