在C代码中将数组归零

可能重复:
如何在没有循环的情况下将数组初始化为C语言?
如何在C中初始化数组

如何在不使用for或任何其他循环的情况下将已知大小的数组归零?

例如:

arr[20] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; 

这是漫长的道路……我需要它的简短方法。

 int arr[20] = {0}; 

C99 [$6.7.8/21]

如果括号括起的列表中的初始值设定项少于聚合的元素或成员,或者用于初始化已知大小的数组的字符串文字中的字符数少于数组中的元素,则聚合的其余部分应为隐式初始化与具有静态存储持续时间的对象相同


 int arr[20]; memset(arr, 0, sizeof arr); 

请参阅memset的参考

注意:您可以将memset与任何字符一起使用。

例:

 int arr[20]; memset(arr, 'A', sizeof(arr)); 

也可以部分填补

 int arr[20]; memset(&arr[5], 0, 10); 

但要小心。 它不受数组大小的限制,您可能很容易对程序造成严重损害,执行以下操作:

 int arr[20]; memset(arr, 0, 200); 

它将在你的arrays之后工作(在windows下)和零内存。 它可能会导致其他变量值的损坏。

男人bzero

 NAME bzero - write zero-valued bytes SYNOPSIS #include  void bzero(void *s, size_t n); DESCRIPTION The bzero() function sets the first n bytes of the byte area starting at s to zero (bytes containing '\0'). 

使用memset

 int something[20]; memset(something, 0, 20 * sizeof(int)); 

如果只需要执行一次, int arr[20] = {0}将是最简单的。