¿Cómo inicializar una matriz a algo en C sin un bucle?

Digamos que tengo una matriz como

int arr[10][10]; 

Ahora quiero inicializar todos los elementos de esta matriz a 0. ¿Cómo puedo hacer esto sin bucles o especificando cada elemento?

Tenga en cuenta que esta pregunta si para C

La solución rápida-sucia:

 int arr[10][10] = { 0 }; 

Si inicializa cualquier elemento de la matriz, C inicializará por defecto cualquier elemento que no especifique explícitamente. Así que el código anterior inicializa el primer elemento a cero, y C establece todos los demás elementos en cero.

Además de la syntax de inicialización, siempre puede memset(arr, 0, sizeof(int)*10*10)

 int arr[10][10] = {0}; // only in the case of 0 

Tienes suerte: con 0, es posible.

 memset(arr, 0, 10 * 10 * sizeof(int)); 

No puede hacer esto con otro valor que 0, porque memset funciona en bytes, no en int s. Pero un int que es todo 0 bytes siempre tendrá el valor 0 .

 int myArray[2][2] = {}; 

Ni siquiera necesitas escribir el cero explícitamente.

int arr [10] [10] = {0};