C++ new动态数组初始化

China☆狼群 提交于 2020-01-14 08:54:00

strlen函数是不包括‘\0’的长度的,sizeof计算的结果才包括'\0'的长度:
C++ new动态数组初始化void testnew( const char* str )
{
    if (!str){
        m_pdata = 0;
    }
    else{     int len = strlen(str);
        m_pdata = new char[len + 1];
        strcpy(m_pdata,str);     m_pdata[len] = '\0';
    }
}

动态数组初始化:


对于内置数据类型元素的数组,必须使用()来显示指定程序执行初始化操作,否则程序不执行初始化操作:

int *pia = new int[10]; // 每个元素都没有初始化

int *pia2 = new int[10] ();  // 每个元素初始化为0


类类型元素的数组,则无论是否使用(),都会自动调用其默认构造函数来初始化:

string *psa = new string[10];  // 每个元素调用默认构造函数初始化

string *psa = new string[10]();  // 每个元素调用默认构造函数初始化

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!