首页 > 解决方案 > 初始化器值太多;初始化动态分配的数组?

问题描述

最近在学习 C++ 时,我为数组动态分配空间,并尝试在下一行使用 8 个默认值对其进行初始化。

int* intArray = new int[8];
intArray = {1, 2, 3, 4, 5, 6, 7, 8};

Visual Studio 不喜欢这样,并在红色下划线2,好像那里有问题,只是给我错误“太多初始化程序值”

我不知道我是否使用了不正确的语法,或者您是否只是不允许在声明后以这种方式设置数组的值。有任何想法吗?

好的,看来这也不适用于常规的非指针数组,我一定只是在做一些愚蠢的事情。

标签: c++arrayspointersinitializationallocation

解决方案


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};

推荐阅读