struct myStruct
{
short int myarr[1000];//want to initialize all elements to 0
}
如何初始化数组?
我尝试在结构体内部使用short int* myarr[1000]={0}
,但是不正确。我该怎么做?我不介意在实现文件中完成。这个结构体包含在头文件中。
struct myStruct
{
short int myarr[1000];//want to initialize all elements to 0
}
如何初始化数组?
我尝试在结构体内部使用short int* myarr[1000]={0}
,但是不正确。我该怎么做?我不介意在实现文件中完成。这个结构体包含在头文件中。
使用通用初始化器:{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
函数。
memset
。int不是引用类型,它们在为结构体分配内存后会被初始化吗?
你可以这样做: memset(&myStruct, 0, sizeof(myStruct));