在循环中分配每个单独的元素时,只能成功分配数组

时间:2013-04-09 20:13:41

标签: c arrays

我有一堆这些:

static const int blockFrames1[4][9]= {{0,1,1, 0,1,1, 0,1,1},{0,0,0, 1,1,1, 1,1,1},{0,1,1, 0,1,1, 0,1,1},{0,0,0, 1,1,1, 1,1,1}};

我希望将一个内部数组分配给一个临时变量,以便在如下的函数中使用:

int tempArr[9];
if(type == 1){  
    tempArr[9] = blockFrames1[0];
}else if(type ==2){
    tempArr[9] = blockFrames2[0];
}
(for loop thru and do some stuff with tempArr)

但我能让这个工作并给我正确数字的唯一方法是实际循环并分配每个数字:

 if(type == 1){
     for (int vv=0; vv<9; vv++) {
         tempArr[vv] = blockFrames1[0][vv];
     }
}

似乎我在声明[9]来定义长度时需要tempArr,但是当我尝试将我现有的一个数组分配给这个有或没有{的新数组时,它会搞砸{1}}。

1 个答案:

答案 0 :(得分:3)

数组不可分配。如果要填充它们,则只需memcpy()。另外,是的,你需要声明中的维度(好吧,如果你初始化数组),但是如果你在声明之外使用方括号语法,那么那已经索引/下标数组,以便访问它的元素。 / p>

总而言之:

// declaration
int array[9];

// assignment to one element
array[0] = 42;

// "assignment" to another array - rather a bytewise copy
int other_array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
memcpy(array, other_array, sizeof(array));