我创建了一个动态数组,并且需要将所有成员初始化为0。在C语言中怎样实现?
int* array;
array = (int*) malloc(n*sizeof(int));
我创建了一个动态数组,并且需要将所有成员初始化为0。在C语言中怎样实现?
int* array;
array = (int*) malloc(n*sizeof(int));
在这种情况下,你应该使用calloc()
函数:
array = (int*) calloc(n, sizeof(int));
可以安全地假设,现在所有的系统都把所有零位作为零的表示。
§6.2.6.2保证这将起作用:
对于任何整数类型,其中所有位都是零的对象表示应该是该类型中值为零的表示。
也可以使用 malloc()
+ memset()
的组合方法,但由于在此答案的评论中讨论的原因,使用 calloc()
可能更有效率。
memset(array, 0, n*sizeof(int));
或者,您可以使用calloc
分配内存块,该函数会自动执行以下操作:
array = calloc(n, sizeof(int));
calloc
文档:
void *calloc(size_t nmemb, size_t size);
calloc() 函数分配 nmemb 个大小为 size 字节的数组所需的内存,并返回指向已分配内存的指针。分配的内存被设置为零。...
使用calloc
函数(用法示例):
int *array = calloc(n, sizeof(int));
来自calloc
参考页面:
void *calloc(size_t nelem, size_t elsize);
calloc()
函数将为一个由nelem
个元素组成的数组分配未使用的空间,每个元素的大小为elsize
字节。 该空间将被初始化为所有位0。
memset(array, 0, n * sizeof *array);
for (i=0; i<x; ++i){
array[i]=0;
}
应该就可以了。我猜你需要编写一个循环,使数组中的每个元素都变为0。Memset也可以为你工作。