如何在C中将动态int数组元素初始化为0

时间:2012-01-07 21:44:51

标签: c arrays dynamic-arrays

我创建了一个动态数组,我需要将所有成员初始化为0。 如何在C中完成?

   int* array;
    array = (int*) malloc(n*sizeof(int));

5 个答案:

答案 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));

来自calloc reference page

  

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也适合你。