C++ new动态数组初始化

复制代码

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]();  // 每个元素调用默认构造函数初始化

posted @   PKICA  阅读(23307)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示