c - 结构标量初始值设定项中的多余元素

标签 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 };

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

干杯:)

最佳答案

这是一个指针

struct result * result_elements /**/;

你尝试初始化它
{ NULL, 0 }

你可以初始化它,例如使用标量初始化程序,例如
NULL

您可以使用非标量初始化程序初始化一个单独的(非指针)变量,例如
struct result avariable = { NULL, 0 };

然后你可以像这样初始化你的指针
struct result * result_elements = &avariable;

关于c - 结构标量初始值设定项中的多余元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50614424/

相关文章:

java - 使用 C/C++ 或 Java 打开现金抽屉

c - 在c中用指针和char结构

c++ - 通过引用传递数据以构建它

c - 以字符指针作为参数的函数

我可以在 c 结构声明中使用宏吗?

c++ - 在结构内声明变量时出现段错误

CPU 架构依赖?

c - 是否可以在 C 语言中执行 Kattis "Mixed Fractions Q"并且在 2 秒限制内

php - C函数substr、PHP扩展、strncpy长度错误

c++ - 为什么C++不允许匿名结构?