2016-03-29 9 views
0

私は2つの列挙型の配列を持っていますのようなシナリオは次のとおりです。Cで列挙型配列を格納する配列を作成するには?

FRUITS fruit1[2][3] = 
{ 
    {apple, kiwi, banana}, 
    {banana, kiwi, kiwi} 
}; 

FRUITS fruit2[3][2] = 
{ 
    {apple, banana}, 
    {apple, kiwi}, 
    {banana, kiwi} 
}; 

は、どのように私は上記の2つの配列を格納するための配列を宣言することができますか? Like:

TYPE配列[] = {fruit1、fruit2};

ありがとうございました!

答えて

0

2つの配列の次元が異なるため、このように「格納」することはできません。ディメンションは型の一部です。基本的には、さまざまな型の要素の配列が必要です。

もう1つの問題は、明示的にmemcpyのない配列を2つコピーできないことです。

異なる次元の2次元配列の配列を持ち、それらを実行時に処理したい場合は、各配列構造の最初の要素へのポインタと次元を導入する必要があります。もちろん、メモリを管理する必要があります。

この問題はenumとは何の関係もありません。C enumは基本タイプ(int)なので、この問題はまったくありません。

+0

ありがとうございます。 2次元の列挙型配列を2つ格納する方法を提案できますか? –

+0

3次元配列を宣言するのが最も簡単な方法です。または、2次元配列へのポインタの配列が必要になるかもしれません: 'FRUITS *(Array [2] [3])[] = {&fruit1、&fruit2}'。または 'FRUITS *(Array [3])[] = {fruit1、fruit2}'は1次元の情報を失います。しかし、ここでは複雑になっています...あなたは 'typedef FRUIT fruit_array2d_t [2] [3]; fruit_array2d_t *配列[] = {&fruits'、&fruit2} '。または、次元を格納する構造体と、要素にアクセスするメモリと関数の単純な線形チャンクを作成します。 –

関連する問題