13

字符串构造通过执行获得数据空间

new char[strlen(cp)+1];

由于字符串中只有strlen(cp)字符,所以额外的字节是什么?

4

2 回答 2

22

对于表示字符串结尾的特殊'\0'字符。

(请记住,C 风格的字符串是以null 结尾的数组)。

其他有用的说明:

  • strlen 计算'\0'(这就是为什么你需要这个额外的字节)。
  • strcpy 确实复制'\0'.
  • char str[7] = "String";-'\0'自行添加。
  • char str[] = {'S','t','r','i','n','g'}-添加'\0'
  • char str[7] = {'S','t','r','i','n','g'}- 将添加'\0'
于 2012-11-16T15:06:22.693 回答
2

在基于 C 的字符串中,字符串末尾总是有一个特殊字符,'\0'它也需要一个额外的字节。这就是为什么我们需要一个额外的字符并且我们需要数组strlen(str)+1来存储字符串。

于 2012-11-16T16:00:21.200 回答