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

C中需要一个大的空数组作为全局variables。 除了input外,还有什么办法可以做到吗?

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

全局variables和静态variables会自动初始化为零。 如果你有简单的

 char ZEROARRAY[1024]; 

在全局范围内它将在运行时全部为零。 但是如果你有一个本地数组,实际上有一个简写语法。 如果数组被部分初始化,那么未初始化的元素会收到相应types的值0。 你可以写:

 char ZEROARRAY[1024] = {0}; 

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

 memset(ZEROARRAY, 0, 1024); 

如果你改变了它并想把它重新设置为全零,那将会很有用。

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

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

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

一般在c中,一个声明但未定义的variables被视为0.对于例如:

  int main(){ int a[500]; for(i=0;i<500;i++) printf("%d",a[i]);// It will print elements with 0 along with a garbage value } 

要避免这种情况和手动初始化:

 int main(){ int i,a[500]; for (i=0;i<500;i++){ a[i]=0;// set value 0 to all the array index } for (i=0;i<500;i++) printf("%d\n",a[i]); return 0; }