2012-02-20 18 views
0

私はより簡単なアクセスのために単一の配列に入れたいブール値の配列の束を持っていますが、何らかの理由でこれはうまくいきません。Cで配列の配列を作成しようとしています

私の配列は次のようになります。私は配列の私の配列を宣言

boolean l1_000[8] = {1,0,0,0,0,0,0,0};

boolean level1[8]; 

そして私は私がちょうど宣言することができ、これらの2のどちらか(最初のものを考え出しましたこれらの配列は直接私が大きな配列に設定した場所):

level1[0] = {1,0,0,0,0,0,0,0}; 
level1[0] = l1_000; 

私もlevel1 [8] []を試みましたが、それはどちらもうまくいかなかったのです。だから私はここで間違って何をしていますか?どうすればいい?

EDIT:私はブール値* level1 [8]として配列を宣言することでこれを行うことができましたが、level1 [0] = l1_000しか実行できません。 level1 [0] = {1,0,0,0,0,0,0,0}することができますか?

答えて

5

すでに各要素をコピーせずに作成された配列を格納したいときには、配列の配列を宣言することはできませんが、ポインタの配列を宣言することができます。

boolean* level1[] = { 
    l1_000, // the array name decays to a pointer to the first element 
    l2_000, 
    // etc 
}; 
+0

私はそれだけでも考え出しました。しかし、同じ行に配列を作成したいのであれば、どうすればいいでしょうか? –

+2

@ChristianA.Strømmenすでに作成されている配列を格納するか、同じ行にその配列を作成するかのどちらかを選択する必要があります。 'boolean level1 [] [8] = {{0,1,1,1,0,0,0,1}、{1、1、1、1}を同じ行に作成する場合は、 、1,1,1,1}、/ * etc * /}; ' –

+0

パーフェクト!ありがとうございました! :) –

1

私のC-FUはちょっとです弱いが、あなたはこれをしなければならない。

int l1_000[8] = {1,0,0,0,0,0,0,0}; // one row 
int level1[8][8];// 8 high, 8 wide 
memcpy(level1[0], l1_000, sizeof(int)*8); // size of int * number of memory elements 

基本的にint variable[]はあなたが右のそれを初期化している場合にのみ使用する必要がありますし、他の賢明な、それが動作しませんやって。

はまた、あなたが配列された最初の要素を設定しようとしているため、この

level1[0] = l1_000; 

ような配列の位置が動作しない設定します。

関連する問題