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}};

そして、内部配列の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 つを[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 に答える