将数组值重置为0的最简单方法是什么?

时间:2011-11-30 22:48:40

标签: c arrays

假设我们有一个指针(例如,定义为int * p)到数组的开头和数组的大小(例如,1000)。我们想将所有1000个数组值重置为0.最简单的方法是什么?

5 个答案:

答案 0 :(得分:10)

最简单的方法是使用memset。

memset(p, 0, 1000 * sizeof(int));

答案 1 :(得分:4)

使用memset()将内存归零对于int数组的示例或任何其他整数类型都是有用的。

如果数组是动态分配的,另一个选项是使用calloc()而不是malloc()来分配它,以保证它最初设置为所有位为零。

对于floatdouble(或指针,如果你希望它们初始化为NULL)的数组,使用循环更好,因为这些方法不可移植:没有关于表示的保证在这些类型中,所有位 - 零不一定表示浮点零(尽管它恰好适用于最常见的格式,IEEE 754)或NULL指针(尽管不是这种情况的平台很少)。

(有关整数类型的保证,请参阅C99§6.2.6;有关§7.20.3.1中calloc()的注释。)

答案 2 :(得分:2)

我会选择:

#include <string.h>

memset(p, 0, 1000 * sizeof(p[0]));

答案 3 :(得分:1)

如果您想要速度,请使用标准库函数memset。 它基本上只是循环遍历每个值并写入零,但它已针对速度进行了优化。

void * memset ( void * ptr, int value, size_t num );

原型包含在string.h

答案 4 :(得分:0)

您可以使用bzero,memset或普通循环。