C 无法理解结构初始化

C 无法理解结构初始化,c,arrays,struct,initialization,C,Arrays,Struct,Initialization,我遇到了困难的结构初始化 static struct option long_options[] = { /* These options set a flag. */ {"res", required_argument, NULL, 'r'}, {0, 0, 0, 0}, }; 有人能解释一下结构初始化吗? 我只知道这样的结构: struct point { int x;

我遇到了困难的结构初始化

    static struct option long_options[] =
    {
            /* These options set a flag. */
            {"res",    required_argument, NULL, 'r'},
            {0, 0, 0, 0},
    };
有人能解释一下结构初始化吗? 我只知道这样的结构:

struct point {
   int    x;
   int    y;
};

请大家解释一下。

< P> C和C++是不同的语言。上面的一些含义取决于所考虑的语言是C还是C++。 程序必须在您未向我们显示的部分代码中包含
struct option
声明。声明:

static struct option long_options[] =
    {
            /* These options set a flag. */
            {"res",    required_argument, NULL, 'r'},
            {0, 0, 0, 0},
    };
设置此类选项的数组。大概,
{0,0,0,0}
标志着选项数组的结束。它被称为一个

struct options
long\u options
数组的第一个元素将其元素分别设置为
“res”
必需的\u参数
NULL
'r'

通过初始化,可以推断
struct选项的元素是

  • a
    const char*
  • 无论
    必需参数的类型是什么。它可能是
    int
    enum
    ,甚至可能是
    bool
  • 某种指针
  • int
    (如果是C)或
    char
    (如果是C++)

这不是结构声明。这是类型为
struct option
的结构静态数组的定义


您需要在程序中的其他地方找到
struct选项的声明。

A
struct
可以有任意数量和类型的变量,甚至其他
struct
和结构指针

还要记住,您的代码不显示任何结构声明。该结构的声明在其他地方出现。这是类型为
struct option
的名为
long\u options
static
数组变量的定义(和初始化)

看到定义,我们可以猜测,您的
struct
定义可能如下

struct option{

  char * a;
  <type of required_argument> b;
  void * c;
  char d;
};
struct选项{
char*a;
B
无效*c;
chard;
};

程序中的其他地方有一个
结构选项。代码创建了<代码> static < /COD>数组,类型为<代码>结构选项> /Cord>,初始化其中的内容。它不是结构声明,而是变量声明。@ USER 4098326和初始化,即定义。C或C++?挑一个。谢谢你的评论。这是一个c文件。我知道它是在别的地方申报的。我找不到其声明的源文件。结束。。。意思是,一个哨兵。