Inicializando la matriz de longitud variable

Al inicializar un comstackdor de matriz de longitud variable, aparece un mensaje de error:

[Error] variable-sized object may not be initialized 

Fragmento de código:

 int n; printf("Enter size of magic square: "); scanf("%d",&n); int board[n][n] = {0}; 

¿Cómo deberían inicializarse las matrices de longitud variable ? Y por qué es que todos los elementos no se inicializan a 0 en la forma en que aparece a continuación;

  int board[n][n]; board[n][n] = {0}; 

?

Los VLA no se pueden inicializar mediante ninguna forma de syntax de inicialización. Debe asignar los valores iniciales a sus elementos de matriz después de la statement de la manera que prefiera.

C11: 6.7.9 Inicialización (p2 y p3):

Ningún inicializador intentará proporcionar un valor para un objeto no contenido dentro de la entidad que se está inicializando.

El tipo de entidad que se inicializará será una matriz de tamaño desconocido o un tipo de objeto completo que no sea de tipo de matriz de longitud variable .

Tendrás que usar memset :

 memset(board, 0, sizeof board); 

Si desea utilizar VLA, debe eliminar la inicialización {0}

 int n; printf("Enter size of magic square: "); scanf("%d",&n); int board[n][n]; 

1. Simplemente puede inicializar la matriz de la siguiente manera-

 int n; printf("Enter size of magic square: "); scanf("%d",&n); int board[n][n]; for(int i=0; i 

2. memset () debe usarse solo cuando desee establecer la matriz en "0".

    Intereting Posts