Comprendre la magie derrière le tableau[100] = {0} ; Initialisation
Lorsqu'ils rencontrent le tableau d'extraits de code C/C[100] = {0}, les développeurs peuvent se demander comment le compilateur initialise tous les éléments du tableau à zéro sans effort.
Mécanisme d'initialisation du compilateur
Ce comportement n'est pas une magie obscure mais plutôt un aspect bien défini de les spécifications C et C.
En C
Conformément à la section 6.7.8.21 de la spécification C, les éléments non initialisés d'un tableau seront initialisés comme suit :
Cela s'applique de manière récursive aux tableaux et structures imbriqués.
En C
Section 8.5. 1.7 de la spécification C indique que les éléments non initialisés dans un tableau seront initialisés par agrégation. L'initialisation globale initialise les valeurs des éléments à leurs valeurs par défaut, qui pour les caractères est zéro.
Liste d'initialisation vide
En C, vous pouvez également utiliser un tableau de liste d'initialisation vide [100] = {} ; pour déclencher l'initialisation globale pour tous les éléments du tableau.
Sortie de l'assemblage du compilateur
Le code d'assemblage spécifique généré par le compilateur peut varier en fonction de l'implémentation spécifique. Cependant, cela implique généralement l'initialisation d'une partie du tableau et la copie des valeurs initialisées dans les éléments restants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!