Lors de l'initialisation d'un compilateur de tableau de longueur variable, un message d'erreur s'affiche:
[Error] variable-sized object may not be initialized
Extrait de code:
int n;
printf("Enter size of magic square: ");
scanf("%d",&n);
int board[n][n] = {0};
Comment tableaux à longueur variable doit-il être initialisé? Et pourquoi tous les éléments ne sont pas initialisés à 0
de la manière indiquée ci-dessous;
int board[n][n];
board[n][n] = {0};
?
Les VLA ne peuvent pas être initialisés par aucune forme de syntaxe d'initialisation. Vous devez affecter les valeurs initiales à vos éléments de tableau après la déclaration de la manière que vous préférez.
Aucun initialiseur ne doit tenter de fournir une valeur pour un objet non contenu dans l'entité en cours d'initialisation.
Le type d'entité à initialiser doit être un tableau de taille inconnue ou un type d'objet complet ce n'est pas un type de tableau de longueur variable.
Vous devrez utiliser memset
:
memset(board, 0, sizeof board);
1.Vous pouvez simplement initialiser le tableau comme suit-
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 () ne doit être utilisé que lorsque vous souhaitez définir le tableau sur "0".