Странное объявление структуры - PullRequest
0 голосов
/ 14 января 2011

Я знаком со структурами и массивами в C, однако я понятия не имею, что происходит в приведенном ниже коде.Порядок объявления структуры обычно:

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

Почему после struct (ниже) есть 2 слова и скобка []Насколько я знаю, это используется как условие, таблица поиска действий.

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

Ответы [ 4 ]

5 голосов
/ 14 января 2011

Первая часть вашего кода,

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, я не смогу дать больше советов о том, почему оно написано так, как оно есть.

2 голосов
/ 14 января 2011

Кажется, что:

struct act_tbl

Относится к (struct) типу, который был объявлен с именем act_tbl.

const struct act_tbl ActionTbl[]

Инициализирует 'const' форму этой структуры с именем ActionTbl [] (с [], указывающим на создание массива)

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

являются параметрами инициализации.

0 голосов
/ 14 января 2011

Они определяют и инициализируют массив структур act_tbl.

0 голосов
/ 14 января 2011

struct act_tbl - это тип, а ActionTbl - переменная, которую он объявляет.

A [] после того, как переменная говорит, что это массив. Поскольку между ними нет целого числа, размер массива определяется числом инициализаторов.

...