int n;
scanf("%d",&n);
int arr[n];
arr[n]={0};
I want to initialize all elements to 0.on compilation i get error "expected expression" at line 4 position 8.I searched but found no method to do that.
3 Réponses :
au lieu de
Vous devez (en supposant des variables automatiques) p> en définition (en supposant ou après définition après la définition p> ou p> si arr [n] = {0}; code> p> n code> est une expression constante): p> n code> est une expression constante et le arr comp code> a une durée de stockage statique (global ou a un mot clé statique avant code> IT), vous n'avez rien à faire p> p>
VLAS ne peut pas être initialisé.
@usr était un peu imprécis
Les VLAS doivent être sur la pile ou sur le tas; De toute façon, vous devez utiliser memset () code>.
Sauf si ce ne sont pas VLAS (notez la remarque de const expression)
VLAS (tableaux de longueur variable) ne peuvent pas être initialisés.
Vous pouvez plutôt utiliser Alternativement, vous pouvez utiliser une matrice de taille fixe (par exemple, memset code>: p> int ARR [25] = {0}; code>) ou une matrice allouée dynamiquement (par exemple avec calloc code> que zéro initialise). P> p>
6.7.9 forte>
...
contraintes strong>
...
3 Le type de l'entité à initialiser doit être une matrice de taille inconnue ou complète Type d'objet ce n'est pas un type de matrice de longueur variable. em> blockQuote>C 2011 en ligne Projet em> sup> p>
emphase ajoutée. Les VLAS peuvent ne pas avoir d'initialisateur dans le cadre de leur définition. Vous devrez zéro sortir le tableau après la déclaration, soit en utilisant
Memset code> ou une boucle comme indiqué par d'autres. P>