【发布时间】:2023-04-04 04:29:01
【问题描述】:
如果我定义一个字符串:
char array[5] = {"hello"};
是否将NUL字符(\0)字节“隐藏”添加到“array[5]”中,使得该数组在内存中不包含5个字节,而是包含6个字节?
或者,NUL 字符字节是否仅在 char 数组的最后一个元素之后与内存中的“array[5]”“分离”,但不直接分配给“array[5]”?
如果我会这样说:
i = strlen(array);
printf("The Amount of bytes preserved for array: %d",i);
为数组 [5] 保留的字节数会是什么结果?
“NUL”字符(“\0”)字节是在内存中 char-array 的最后一个元素之后分开还是分配给该 char-array?
【问题讨论】:
-
空字符只是另一个字符。所以你的
array[5]太小了。 -
C 还是 C++?代码的效果在C和C++中完全不同。
-
@klutt 看到 melpomene 的回答。代码是有效的 C 但无效的 C++。