我需要一个大的C空数组作为全局变量。除了打字,还有什么办法吗
char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };
?
我需要一个大的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来编译代码。