C中结构的不同语法

Different syntax of structure in C

c结构有哪些不同的语法?如何解码:

struct p {
    char a[1];
    int b;
    int *a;
    int value;
};
struct p q[] = {
    {"a",      0, &b, C},
    {"J",      0, &k, l}
};

我找到了另一个讨论here,但没有遇到这种类型。

qp.

类型结构的数组

p 具有以下元素:

  1. 字符指针

  2. 任何类型(int、char、short 等,甚至指针也是可能的)

  3. 指向任何类型的指针

  4. 应该是常数

语法实际上是初始化q[0]q[1]

那是在声明一个名为 q 的类型为 struct p 的数组,它实际上根本没有定义一个结构。初始化列表中的 {"a", 0, etc...} 正在创建结构,通过为结构字段定义值来填充数组的第一个和第二个元素,并在这样做时创建实例堆栈上的结构。

结构 p 似乎包含一个 字符*,

一个整数,

一些其他指针

和其他东西(可能是整数)。