创建动态数组
1、初始化动态分配的数组
如果数组元素具有类型,将使用该类的默认构造函数初始化,如果是内置类型,则无初始化:
string *psa = new string[10]; //array of 10 empty strings
int *pia = new int[10]; //array of 10 uninitialized ints
也可以使用跟在数组长度后面的一对空圆括号,对数组元素作值初始化
int *pia2 = new int[10](); //array of 10 uninitialized ints
圆括号要求编译器对数组做值初始化,此处把数组元素都设置为0
2、const对象的动态数组
在堆中创建的数组存储内置类型的const对象,必须为这个数组提供初始化:因为数组元素都是const对象,无法赋值,唯一方法就是对数组做值初始化:
//error:uninitialized const array
const int *pci_bad = new const int[100];
//ok:value-pci_ok = new const int[100]();
C++允许定义类类型的const数组,但该类类型必须提供默认构造函数。
以创建的常量元素不允许修改——因此这样的数组实际上用处不大。
3、允许动态分配空数组
C++虽然不允许定义长度为0的数组变量,但是明确指出,调用new动态创建长度为0的数组时合法的
char arr[0]; //error:cannot define zero-length array
char *cp = new char[0]; //ok:but cp can't be dereferenced
用new动态创建长度为0的数组时,new返回有效地非零指针。该指针与new返回的其他指针不同,不能进行解引用操作,因为它毕竟没有指向任何元素。允许的操作:比较运算;在该指针上加(减)0;或者减去本身,得0;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现