c - 在C中初始化结构内部的数组

标签 c arrays struct initialization header-files

struct myStruct
{   
    short int myarr[1000];//want to initialize all elements to 0
}

如何初始化数组?

我尝试在结构中执行 short int* myarr[1000]={0} 但这是错误的。我怎样才能做到这一点?我不介意在实现文件中这样做。此结构包含在头文件中。

最佳答案

使用通用初始化程序:{0}

通用初始化器适用于任何事物,并将元素初始化为正确的 0(指针为 NULL,整数为 0, double 为 0.0 , ...):

struct myStruct example1 = {0};
struct myStruct example2[42] = {0};
struct myStruct *example3 = {0};

为动态分配的对象编辑。

如果您要动态分配内存,请使用 calloc 而不是 malloc

p = malloc(nelems * sizeof *p); /* uninitialized objects; p[2] is indeterminate */
q = calloc(nelems, sizeof *q);  /* initialized to zero; q[2] is all zeros */

对于 realloc(可能还有其他情况),您需要memset

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

相关文章:

c - 以下是什么意思?

arrays - 比较两个数组,删除匹配的项目

javascript - 是否有与 Java 的 deepToString() 等效的 JavaScript?

java - 元素在数组中的位置

python - 标准库中的 "common"模块是什么?

c 字段的结构、指针和内存分配

c - C 中基于 UDP 的聊天

c - 是否允许 C 编译器合并对 volatile 变量的顺序分配?

c++ - 内联结构成员

c - 从 C 中的结构返回 char 数组时出现奇怪的字符