奇怪的结构声明

时间:2011-01-14 02:09:59

标签: c arrays struct const lookup

我熟悉C语言中的结构和数组,但我不知道下面代码中发生了什么。结构声明的顺序通常是:

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

为什么在struct(下面)和[]括号之后有两个单词?据我所知,它被用作条件,动作查找表。

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

4 个答案:

答案 0 :(得分:5)

代码的第一部分,

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

表示“定义一个名为employee的结构,然后创建一个名为mark的实例。”它等同于更详细的

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

代码的第二部分,

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

};

表示“创建struct act_tbl类型的对象数组,其中第一个act_tbl初始化为{0, BUZZ| DISP| A_ONCE},第二个也初始化为{0, BUZZ| DISP| A_ONCE}。”但是,如果没有更多关于act_tbl的知识,我认为我不能提供更多有关它为何如此书写的建议。

答案 1 :(得分:2)

似乎:

struct act_tbl

引用已声明为act_tbl的类型。

const struct act_tbl ActionTbl[]

初始化名为ActionTbl []的结构的'const'形式([]表示创建数组)

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

是初始化参数吗。

答案 2 :(得分:0)

struct act_tbl是类型,ActionTbl是它声明的变量。

变量后面的[]表示它是一个数组。由于它之间缺少整数,因此数组的大小由初始化器的数量决定。

答案 3 :(得分:0)

他们正在定义和初始化一系列act_tbl结构。