Est-ce une façon d'initialiser un tableau à tous les 0 ?
char myarray[ARRAY_SIZE] = {0}
supporté par tous les compilateurs ? ,
Si oui, existe-t-il une syntaxe similaire pour d'autres types ? par exemple
bool myBoolArray[ARRAY_SIZE] = {false}
Est-ce une façon d'initialiser un tableau à tous les 0 ?
char myarray[ARRAY_SIZE] = {0}
supporté par tous les compilateurs ? ,
Si oui, existe-t-il une syntaxe similaire pour d'autres types ? par exemple
bool myBoolArray[ARRAY_SIZE] = {false}
Oui, cette forme d'initialisation est prise en charge par tous les compilateurs C++. Elle fait partie du langage C++. En fait, c'est un idiome qui est venu au C++ à partir du langage C. Dans le langage C = { 0 }
est une expression idiomatique Initialisateur zéro universel . C'est aussi presque le cas en C++.
Puisque cet initaliseur est universel, pour bool
vous n'avez pas vraiment besoin d'une "syntaxe" différente. 0
fonctionne comme un initialisateur pour bool
également, de sorte que
bool myBoolArray[ARRAY_SIZE] = { 0 };
est garanti pour initialiser le tableau entier avec false
. Ainsi que
char* myPtrArray[ARRAY_SIZE] = { 0 };
en garantie d'initialiser l'ensemble du tableau avec des pointeurs nuls de type char *
.
Si vous pensez que cela améliore la lisibilité, vous pouvez certainement utiliser
bool myBoolArray[ARRAY_SIZE] = { false };
char* myPtrArray[ARRAY_SIZE] = { NULL };
mais le fait est que = { 0 }
La variante vous donne exactement le même résultat.
Cependant, en C++ = { 0 }
peut ne pas fonctionner pour tous les types, comme les types d'énumération, par exemple, qui ne peuvent pas être initialisés avec des intégrales. 0
. C'est spécifiquement pour cette raison que le C++ supporte la forme la plus courte
T myArray[ARRAY_SIZE] = {};
c'est-à-dire juste une paire vide de {}
. Ceci initialisera par défaut un tableau de n'importe quel type (en supposant que les éléments permettent l'initialisation par défaut), ce qui signifie que pour les types de base (scalaires), le tableau entier sera correctement initialisé par zéro.
Oui, je pense que cela devrait fonctionner et que cela peut également être appliqué à d'autres types de données.
Pour les tableaux de classes, cependant, s'il y a moins d'éléments dans la liste d'initialisation que d'éléments dans le tableau, le constructeur par défaut est utilisé pour les éléments restants. Si aucun constructeur par défaut n'est défini pour la classe, la liste des initialisateurs doit être complète - c'est-à-dire qu'il doit y avoir un initialisateur pour chaque élément du tableau.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.