我需要在C中使用一个大的空数组作为全局数组。除了输入
之外还有什么方法可以做到这一点char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };
答案 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
来编译代码。