0

可能重复:
在 C 字符串中的 '\0' 之后的内存会发生什么情况?

是否可以使指针的第三个元素为 NUL ('\0'),然后“擦除”指针的剩余元素?

4

1 回答 1

3

假设你在谈论 C 风格的字符串,那么是的,有点:

char s[] = "abcdefgh";   // s = "abcdefgh"
                         // (actually contains 9 characters: "abcdefgh\0")

s[3] = '\0';             // s = "abc"
                         // (still contains 9 characters, but now: "abc\0efgh\0")

请注意,此时超出的字符s[3]并没有神奇地消失 - 只是显示字符串,或将其传递给任何采用 C 样式字符串的函数,导致字符串似乎只包含三个字符。你仍然可以做例如

s[3] = 'x';              // s = "abcxefgh"
                         // (still contains 9 characters, but now: "abcxefgh\0")
于 2012-10-24T05:42:37.877 回答