2011-01-14 14 views
0

C言語の構造体と配列に精通していますが、以下のコードで何が起こっているのか分かりません。構造体宣言の順序は、通常、なぜ変わった構造体宣言

​​

あるが2つのワード構造体(下)、ならびに[]括弧の後に?限り、私はそれが条件、アクションルックアップテーブルとして使用されて知っている。

const struct act_tbl ActionTbl[] = 
{ 
    {0, BUZZ | DISP | A_ONCE}, 
    {0, BUZZ | DISP | A_ONCE}, 
}; 

答えて

0

struct act_tbl型で、ActionTblはそれが宣言する変数です。

[]変数の後に、配列であることが示されます。その間に整数がないため、配列のサイズは初期化子の数によって決まります。

​​

は意味

5

あなたのコードの最初の部分、「それのインスタンスを作成し、従業員と呼ばれる構造体の定義はmarkと呼ばれます。」それはあなたのコードの第二部、

const struct act_tbl ActionTbl[]={ {0, BUZZ| DISP| A_ONCE}, 
              {0, BUZZ| DISP| A_ONCE}, 

}より冗長

struct employee { 
    char title; 
    int year; 
}; 
struct employee mark; 

に相当します。

手段「第act_tbl{0, BUZZ| DISP| A_ONCE}に初期化され、第二が同様{0, BUZZ| DISP| A_ONCE}に初期化されているタイプstruct act_tblのオブジェクトの配列を作成してください。」 act_tblが何であるかについての詳細な知識がなければ、私はなぜそれが書かれているのかについてのさらなるアドバイスを提供できるとは思わない。

+0

@arch:つまり、構造体act_tblはコード内の他の場所に定義されています。おそらくヘッダファイルにあるかもしれません。 – asoundmove

+0

ご返信ありがとうございます。 別のファイルで次のように定義されています。 struct act_tbl { \t uint32 \t U32_Condition; \t \t uint32 \t U32_Action; \t }; // {0、BRK | DISP}、 \t \t \t \t {0、KEEP | DISP |}、 //それはどのように使われるだろうか?再度、感謝します – arch

2

ようです:

struct act_tbl 

がact_tblという名前で宣言されています(構造体)のタイプを指します。

const struct act_tbl ActionTbl[] 

は、(アレイの作成を示す[]を有する)ActionTbl []という名前のその構造体の 'CONST' 形

{ {0, BUZZ| DISP| A_ONCE}, {0, BUZZ| DISP| A_ONCE}, }; 

は、初期化パラメータであるが初期化されます。

0

act_tbl構造体の配列を定義して初期化しています。