在过去的几天里,我一直在自学 C++,为我作为 CS 专业的大一新生做准备。我现在在使用 C 风格的字符串,想知道空终止符的意义是什么。

我知道这是必要的,但我想我只是从根本上不明白为什么字符串不会以最后一个字符结尾。

最佳答案



有几种方法可以知道“最后一个字符”在哪里:

  • 将字符串中的字符数与字符串的字符数分开存储,
  • 放置一个标记,指示字符串的最后一个字符,或
  • 将指向字符串最后一个字符的指针与字符串的字符分开存储。

  • C 选择第二条路线;其他语言(Pascal 等)选择第一条路线。 C++ std::string 的一些实现选择第三条路线*。

    * 即使是使用第一种或第三种方法的 std::string 实现也会空终止其缓冲区以与库的 C 部分兼容。这是确保 c_str() 返回有效 C 字符串所必需的。

    关于c++ - 为什么必须使用空终止符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17371157/

    10-11 11:56