我需要一个大的C空数组作为全局变量。除了打字,还有什么办法吗

char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };

?


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

char ZEROARRAY[1024];

在全局作用域中,它将在运行时为全零。但实际上,如果你有一个本地数组,有一种简写语法。如果数组已部分初始化,则未初始化的元素将接收适当类型的值0。你可以这样写:

char ZEROARRAY[1024] = {0};

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

memset(ZEROARRAY, 0, 1024);

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


如果你想将数组初始化为0以外的值,使用gcc你可以这样做:

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

这是C99指定初始化器的GNU扩展。在旧的GCC中,您可能需要使用-std=gnu99来编译代码。