initialize - ¿Cómo inicializar la matriz a 0 en C?
initialize char array c (3)
Necesito una gran matriz nula en C como global. ¿Hay alguna manera de hacer esto además de escribir
char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };
?
Generalmente en c, una variable declarada pero indefinida se trata como 0. Por ejemplo:
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
}
Para evitar esto y la inicialización manual:
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;
}
Las variables globales y las variables estáticas se inicializan automáticamente a cero. Si tienes simplemente
char ZEROARRAY[1024];
en el alcance global serán todos ceros en tiempo de ejecución. Pero en realidad hay una sintaxis abreviada si tienes una matriz local. Si una matriz se inicializa parcialmente, los elementos que no se inicializan reciben el valor 0 del tipo apropiado. Podrías escribir:
char ZEROARRAY[1024] = {0};
El compilador llenaría las entradas no escritas con ceros. Alternativamente, puede usar memset
para inicializar la matriz al inicio del programa:
memset(ZEROARRAY, 0, 1024);
Eso sería útil si lo hubieras cambiado y quisieras restablecerlo a cero.
Si desea inicializar la matriz en valores distintos de 0, con gcc
puede hacer:
int array[1024] = { [ 0 ... 1023 ] = -1 };
Esta es una extensión de GNU de Inicializadores designados C99. En GCC antiguo, puede que necesite usar -std=gnu99
para compilar su código.