结构标量初始值设定项中存在过多元素

Hew*_*ews 5 c struct pointers

我有一个名为的结构result,其定义如下:

struct result {
void** elements;
size_t n_elements;
};
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用以下属性初始化它时,{ NULL, 0 }我收到以下警告:

warning: excess elements in scalar initializer
struct result * result_elements = { NULL, 0 };
Run Code Online (Sandbox Code Playgroud)

这是一个错误,因为它需要一个二维数组吗?如果是这样,我认为 NULL 是允许的?

干杯:)

Yun*_*sch 2

这是一个指针

struct result * result_elements /**/;
Run Code Online (Sandbox Code Playgroud)

你尝试用以下命令初始化它

{ NULL, 0 }
Run Code Online (Sandbox Code Playgroud)

您可以使用标量初始化程序来初始化它,例如

NULL
Run Code Online (Sandbox Code Playgroud)

您可以使用非标量初始化程序初始化一个单独的(非指针)变量,例如

struct result avariable = { NULL, 0 };
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样初始化你的指针

struct result * result_elements = &avariable;
Run Code Online (Sandbox Code Playgroud)

  • 或者 `&(struct result){NULL, 0}` (2认同)