c++ - 初始化器值太多;初始化动态分配的数组?
问题描述
最近在学习 C++ 时,我为数组动态分配空间,并尝试在下一行使用 8 个默认值对其进行初始化。
int* intArray = new int[8];
intArray = {1, 2, 3, 4, 5, 6, 7, 8};
Visual Studio 不喜欢这样,并在红色下划线2,好像那里有问题,只是给我错误“太多初始化程序值”
我不知道我是否使用了不正确的语法,或者您是否只是不允许在声明后以这种方式设置数组的值。有任何想法吗?
好的,看来这也不适用于常规的非指针数组,我一定只是在做一些愚蠢的事情。
解决方案
intArray
不是数组,而是指针。不能用初始化列表初始化指针。
动态分配的内存可以在分配的时候初始化:
int* intArray = new int[8] {1, 2, 3, 4, 5, 6, 7, 8};
C 数组也可以在声明时初始化:
int intArray[8] = {1, 2, 3, 4, 5, 6, 7, 8};
推荐阅读
- javascript - JS - 阻止用户输入电话号码
- azure - 如何仅为一个设备/服务生成 Azure IoT 中心 SAS 令牌?
- linux - Buildroot - 在每次构建时重新提取 Github 包
- html - HTML + CSS 可悬停下拉菜单扩展标题
- c - Polyspace:在浮动类型中断言 min..max 的标量范围
- mysql - mysql-web-community 和 mysql-community 之间的区别
- commanded - 使用 commanded/eventstore 在 Commanded 中实现事件版本控制的一般方法是什么?
- python - 发生异常:TypeError:only size-1 数组可以转换为 Python 标量
- c - EXC_BAD_ACCESS 在函数调用后立即分配给变量
- c - 如何在结构C的数组中搜索