初始化多维数组

Initializing a multidimensional array

我正在尝试批量初始化一个多维数组,但似乎无法使其工作或找不到示例!

我正在使用的尺寸足够大,我不想手动指定它们!

更准确地说:

int test[5][192];
for(int i = 0; i < 5; i++){
    int temp[192] = {...};
    test[i] = temp;
}

// use variable test here..

我想使用这种方法,因为 temp 数组是根据变量 [=25= 动态定义的]i.

这种类型的初始化是否可行?

temp数组应该在动态内存中吗?

因为初始化后我将对 test 的第一个元素的引用传递给另一个函数,我无法控制如何另一个函数传递我需要保持数组数据类型的元素!

数组没有复制赋值运算符。所以这对数组来说是不可能的。

如果您要动态分配每一行,那么在任何情况下您都必须在某处存储它们的元素数量。因此,当每行中的元素数量可能不同时,即使是动态分配的数组也不适合这种情况。

您应该改用标准容器 std::vector<std::vector<int>>

如果你想复制临时数组的值,而不是“=”,你应该使用内存复制

memcpy( test[i], temp, sizeof(temp[192]));

您没有将数组中的第二个维度用于测试数组。你只写test[],但你必须写test[][]。 我认为您不必使用临时数组。您可以直接初始化数组,而无需使用临时数组。

我不是绝对确定,但 memcpy 仅用于一个二元数组,而不用于多维数组

如果你知道,Temptest[i] 是两个指向内存的指针 所以如果你打印 temptest[i] 你会看到它们在内存中开始的地址。 在您的代码中,您 lose test[i] 的地址,因为您更改了指针 test[i]temp 现在它们都指向温度开始的同一个地方!