无法理解Struct初始化

时间:2015-03-26 11:37:16

标签: c arrays struct initialization

我遇到了困难的struct初始化。

    static struct option long_options[] =
    {
            /* These options set a flag. */
            {"res",    required_argument, NULL, 'r'},
            {0, 0, 0, 0},
    };

有人可以解释结构初始化吗? 我只知道Structs:

struct point {
   int    x;
   int    y;
};

请有人解释。

3 个答案:

答案 0 :(得分:4)

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}标记了选项数组的结束。它被称为sentinel value

long_options struct options数组的第一个元素的元素设置为"res"required_argumentNULL'r',分别。

从初始化开始,可以推断出struct option的元素是

  • a const char *
  • required_argument的类型。它可能是intenum,也可能是bool
  • 某种指针
  • int(如果这是C)或char(如果这是C ++)

答案 1 :(得分:4)

struct可以包含任何数量和类型的变量,甚至包括其他struct和结构指针。

另请注意,您的代码不会显示任何结构声明。该结构的声明存在于其他地方。这是static类型为long_options的{​​{1}}数组变量的定义(和初始化)。

看到定义,我们可以猜测,您的struct option定义可能看起来像

struct

答案 2 :(得分:3)

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

您需要在程序的其他位置找到struct option声明