我正在尝试批量初始化一个多维数组,似乎无法使其工作或找到一个例子!
我正在使用的尺寸非常大,我不想手工指定它们!
更确切地说:
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需要保持数组的数据类型!
答案 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] 更改为<强>温度强> 现在他们两个都指向临界开始的那个地方!