0

我有一堆这样的:

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来定义长度,但是当我尝试将现有数组之一分配给带有或不带有[9].

4

1 回答 1

3

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

总而言之:

// 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));
于 2013-04-09T20:20:06.883 回答