matriz initialize initial cpp cadenas arreglo array c arrays initialization

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.