Sal*_*kci 8 c arrays dynamic-arrays
我创建了一个动态数组,我需要将所有成员初始化为0.如何在C中完成?
int* array;
array = (int*) malloc(n*sizeof(int));
Run Code Online (Sandbox Code Playgroud)
Mys*_*ial 20
在这种情况下,您将使用calloc():
array = (int*) calloc(n, sizeof(int));
Run Code Online (Sandbox Code Playgroud)
可以安全地假设所有系统现在都将零位表示为零.
§6.2.6.2保证这一点:
对于任何整数类型,所有位为零的对象表示应该是该类型中零值的表示.
也可以组合使用malloc()+ memset(),但出于本答案评论中讨论的原因,使用它可能更有效calloc().
memset(array, 0, n*sizeof(int));
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用分配您的内存块calloc,这会为您执行此操作:
array = calloc(n, sizeof(int));
Run Code Online (Sandbox Code Playgroud)
calloc 文档:
void*calloc(size_t nmemb,size_t size);
所述 释放calloc() 函数的阵列分配内存nmemb个的元件大小各自字节并返回一个指针分配的内存.内存设置为零....