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/