字符串构造通过执行获得数据空间
new char[strlen(cp)+1];
由于字符串中只有strlen(cp)字符,所以额外的字节是什么?
对于表示字符串结尾的特殊'\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'。在基于 C 的字符串中,字符串末尾总是有一个特殊字符,'\0'它也需要一个额外的字节。这就是为什么我们需要一个额外的字符并且我们需要数组strlen(str)+1来存储字符串。