如何在C中将数组初始化为0?

时间:2010-04-07 03:03:28

标签: c arrays initialization

我需要在C中使用一个大的空数组作为全局数组。除了输入

之外还有什么方法可以做到这一点
char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };

2 个答案:

答案 0 :(得分:233)

全局变量和静态变量自动初始化为零。如果你只是

char ZEROARRAY[1024];

在全局范围内,它将在运行时全部为零。但实际上,如果你有一个本地数组,那么一种简写语法。 If an array is partially initialized, elements that are not initialized receive the value 0 of the appropriate type.你可以写:

char ZEROARRAY[1024] = {0};

编译器会用零填充未写入的条目。或者,您可以在程序启动时使用memset初始化数组:

memset(ZEROARRAY, 0, 1024);

如果您更改了它并希望将其重置为全零,那将非常有用。

答案 1 :(得分:26)

如果您想将数组初始化为0以外的值,使用gcc可以执行以下操作:

int array[1024] = { [ 0 ... 1023 ] = -1 };

这是C99 Designated Initializers的GNU扩展。在较旧的GCC中,您可能需要使用-std=gnu99来编译代码。