variable length feature array are c variable-length-array array-initialization

length - dynamic array arduino



Inicializando matriz de longitud variable (3)

1.Usted puede simplemente 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<n; i++) for(int j=0; j<n; j++) { board[i][j] = 0; } }

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

Al inicializar un compilador 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 se deben inicializar las matrices de longitud variable ? Y por qué todos los elementos no se inicializan a 0 de la manera que se indica a continuación;

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

?


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

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

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

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


Tendrás que usar memset :

memset(board, 0, sizeof board);