struct

时间:2018-05-30 23:00:23

标签: c pointers struct

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

struct result {
void** elements;
size_t n_elements;
};

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

warning: excess elements in scalar initializer
struct result * result_elements = { NULL, 0 };

这是一个错误,因为它期待2D阵列吗?如果是这样,我认为NULL是允许的吗?

干杯:)

1 个答案:

答案 0 :(得分:3)

这是一个指针

struct result * result_elements /**/;

您尝试使用

初始化它
{ NULL, 0 }

您可以初始化它,例如使用像

这样的标量初始化器
NULL

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

struct result avariable = { NULL, 0 };

然后你可以像

一样初始化你的指针
struct result * result_elements = &avariable;