初始化值太多;初始化动态分配的数组?

Too many initializer values; Initializing Dynamically Allocated Arrays?

最近在复习 C++ 时,我为一个数组动态分配 space,并尝试在下一行用 8 个默认值初始化它。

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

Visual Studio不喜欢,把2画红了,好像那里有问题,结果报错"too many initializer values"

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

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

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

C++ 允许没有维度参数的静态分配

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

在哪里进行动态分配

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

必须传递匹配的维度。