初始化值太多;初始化动态分配的数组?
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};
必须传递匹配的维度。
最近在复习 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};
必须传递匹配的维度。