假设我们有一个指针(例如,定义为int * p)到数组的开头和数组的大小(例如,1000)。我们想将所有1000个数组值重置为0.最简单的方法是什么?
答案 0 :(得分:10)
最简单的方法是使用memset。
memset(p, 0, 1000 * sizeof(int));
答案 1 :(得分:4)
使用memset()
将内存归零对于int
数组的示例或任何其他整数类型都是有用的。
如果数组是动态分配的,另一个选项是使用calloc()
而不是malloc()
来分配它,以保证它最初设置为所有位为零。
对于float
或double
(或指针,如果你希望它们初始化为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或普通循环。