我创建了一个动态数组,我需要将所有成员初始化为0。 如何在C中完成?
int* array;
array = (int*) malloc(n*sizeof(int));
答案 0 :(得分:20)
在这种情况下,您将使用calloc()
:
array = (int*) calloc(n, sizeof(int));
可以安全地假设所有系统现在都将零位表示为零。
§6.2.6.2保证了这一点:
对于任何整数类型,所有位都是的对象表示 零应该是该类型中零值的表示。
也可以组合malloc()
+ memset()
,但出于comments of this answer中讨论的原因,使用calloc()
可能更有效。
答案 1 :(得分:7)
memset(array, 0, n*sizeof(int));
或者,您可以使用calloc
分配您的内存块,这样就可以为您完成:
array = calloc(n, sizeof(int));
calloc
文档:
void * calloc(size_t nmemb,size_t size);
calloc()函数为每个 size 字节的 nmemb 元素数组分配内存,并返回指向已分配内存的指针。内存设置为零。 ...
答案 2 :(得分:4)
使用calloc
函数(usage example):
int *array = calloc(n, sizeof(int));
void *calloc(size_t nelem, size_t elsize);
calloc()
函数应为nelem
个数组分配未使用的空间,每个元素的大小为字节elsize
。 空格应初始化为所有位0。
答案 3 :(得分:0)
memset(array, 0, n * sizeof *array);
答案 4 :(得分:0)
for (i=0; i<x; ++i){
array[i]=0;
}
这应该可以解决问题。我想你必须创建一个循环,使数组中的每个元素都为0。 Memset也适合你。