为什么str=new char[strlen(s)+1]; 中要+1

Posted clemente

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么str=new char[strlen(s)+1]; 中要+1相关的知识,希望对你有一定的参考价值。

因为strlen是计算字符串有多少字符的,不包括结束符”“,所以加一。如"abc",占四个字节,strlen的值是3

//释放实例自身已有内存
    delete[] m_pData;
    m_pData=NULL;
//在删除自身内存以后在重新new一个长度为len+1的字符数组,类似拷贝构造函数 int len=strlen(str.m_pData); m_pData=new char[len+1]; strcpy(m_pData,str.m_pData);

 

以上是关于为什么str=new char[strlen(s)+1]; 中要+1的主要内容,如果未能解决你的问题,请参考以下文章

将结构传递给多个其他函数

string类的实现加强版

大数加减乘模板

使用 strlen() 在堆栈中分配缓冲区

strlen()函数:返回字符串的长度

void main(){char str[] = “ ab