Notes C ++: l' initialisation des tableaux a une belle liste sur l'initialisation des tableaux. j'ai un
int array[100] = {-1};
s'attendant à ce qu'il soit plein de -1 mais ce n'est pas le cas, seule la première valeur est et les autres sont des 0 mélangés avec des valeurs aléatoires.
Le code
int array[100] = {0};
fonctionne très bien et met chaque élément à 0.
Qu'est-ce que je manque ici .. Ne peut-on pas l'initialiser si la valeur n'est pas nulle?
Et 2: l'initialisation par défaut (comme ci-dessus) est-elle plus rapide que la boucle habituelle dans tout le tableau et attribue-t-elle une valeur ou fait-elle la même chose?
{0}
n'est pas un cas particulier pour les structures ni les tableaux. La règle est que les éléments sans initialiseur sont initialisés comme s'ils l'avaient été 0
pour un initialiseur. S'il y a des agrégats imbriqués (par exemple struct x array[100]
), les initialiseurs sont appliqués aux non-agrégats dans l'ordre "ligne principale"; les accolades peuvent éventuellement être omises en faisant cela. struct x array[100] = { 0 }
est valide en C; et valide en C ++ tant que le premier membre de struct X
accepte 0
comme initialiseur.
{ 0 }
n'est pas spécial en C, mais il est beaucoup plus difficile de définir un type de données qui ne peut pas être initialisé avec lui car il n'y a pas de constructeurs et donc aucun moyen d'empêcher 0
d'être implicitement converti et assigné à quelque chose .