初始化多维数组

时间:2015-06-23 14:09:37

标签: c++ arrays multidimensional-array initialization

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

我正在使用的尺寸非常大,我不想手工指定它们!

更确切地说:

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

// use variable test here..

我想使用此方法,因为 temp 数组是动态定义的,具体取决于变量 i 。< / p>

这种初始化是否可行?

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

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

4 个答案:

答案 0 :(得分:3)

如果要复制临时数组的值,而不是&#34; =&#34;,则应使用内存副本

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

答案 1 :(得分:2)

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

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

您应该使用标准容器$(document).ready(function(e) { var myddsAux = $(".mydds").msDropdown().data("dd"); myddsAux.on('change', myddsFunction); var myddsFunction = function ( event ){ alert("hiiiii"); } });

答案 2 :(得分:1)

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

我并非绝对确定,但是memcpy只是用于一个diemnsionalarrays而不是用于多维数组

答案 3 :(得分:0)

如果你知道, Temp test [i] 是两个指向内存的指针 因此,如果您打印 temp 测试[i] ,您将看到他们从内存开始的地址。 在您的代码中 丢失 test [i] 的地址,因为您将指针 test [i] 更改为<强>温度 现在他们两个都指向临界开始的那个地方!