struct myStruct
{
short int myarr[1000];//want to initialize all elements to 0
}
如何初始化阵列?
我尝试在结构体内做short int* myarr[1000]={0}
,但这是错误的。我怎样才能做到这一点?我不介意在实现文件中这样做。该结构包含在头文件中。
答案 0 :(得分:3)
使用通用初始值设定项:{0}
。
通用初始化程序适用于任何事情,并将元素初始化为正确的0(指针为NULL
,对于整数为0
,对于双精度为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
。
答案 1 :(得分:1)
如果它是从函数声明的(不在堆栈上),整个结构将在编译时归零。
否则,您可以在声明后使用memset
。
答案 2 :(得分:1)
只需使用{0}初始化结构的实例,这也会使您的数组归零。或者,使用memset作为NKCSS演示。
答案 3 :(得分:0)
int的引用类型,在为结构分配内存后是不是会初始化?
你可以这样做: memset(& myStruct,0,sizeof(myStruct));