【发布时间】:2015-07-23 01:19:40
【问题描述】:
我想知道 C 编译器如何为您自己初始化的字符数组分配内存,例如:
char example[] = "An example string";
如果它是单个字符,它将是 8 byte,那么示例是 17 bytes 还是有更多,因为它需要 \0 来完成它?
或者它是否高估了它需要多少内存?
【问题讨论】:
-
example是 18 个字节,而不是 17 个(你数过 NUL 终止符吗?) -
8 byte或8 bit你的意思是? -
字符串以
\0-null 字符结尾,而不是\n -
\0char 是编译器自动添加的空字符;而\n是换行符,如果程序员没有指定,则不使用。 -
因此,如果您将数组设置为字符串文字,则始终添加 NUL 终止符,并且它只是 8 位/1 字节的所有单个字符加上空终止符的 1 个字节?