c - 结构体数组的初始化

标签 c arrays struct initialization

我正在尝试将结构数组初始化为零。由于某种原因,我收到错误“预期表达式”。我的代码有什么问题吗?

struct mystruct {
    double a;
    double arr[2];
}

int main() {
    struct mystruct *array = (struct mystruct*)malloc(3 * sizeof(struct mystruct));
    for (int i = 0; i < 3; i++) {
        array[i] = { 0 };
    }
    return 0;
}

最佳答案

聚合初始化仅适用于……初始化:

struct mystruct x = {0};   // initialization

没有这样的赋值语法。

但您不需要,只需使用 calloc 而不是 malloc 来动态分配、清零内存。

struct mystruct* array = calloc(3, sizeof(struct mystruct));

关于c - 结构体数组的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41817704/

相关文章:

JavaScript 通过属性删除对象数组中的元素

c# - 为什么 C# 编译器强制在构造函数中显式初始化所有值类型的字段?

c# - 在 C# 中按字母顺序对数组进行排序

c - 初始化 Valgrind 错误

c - scanf ("...%n",...) 匹配失败

c - C 双指针分配问题

C++轻型可追加数组容器

c++ - 将构造函数添加到我的结构时不断出现链接器错误

c - 如何轻松获取 union 的活跃值(value)?

c - 调试 makefile