Initialisation d'un tableau avec des accolades : dévoilement du comportement du compilateur
En programmation, attribuer un tableau avec des accolades, comme array[100] = {0}, soulève des questions sur la manière dont les valeurs sont initialisées en interne. Examinons la magie derrière cette notation.
Magie ou logique du compilateur ?
Contrairement à la perception commune, il n'y a pas de magie impliquée. Le comportement de ce code est régi par les spécifications du langage de programmation :
Spécification C (section 6.7.8.21) : Pour les éléments de tableau non spécifiés, les pointeurs sont initialisés à NULL et les types arithmétiques (y compris char ) sont mis à zéro.
Spécification C (section 8.5.1.7) : Les éléments de tableau non spécifiés sont initialisés par agrégation.
Liste d'initialisation vide en C : C prend en charge les listes d'initialisation vides comme array[100] = {};, qui initialisent par agrégation tous les éléments du tableau .
Code généré par le compilateur : Généralement, les compilateurs génèrent du code qui définit chaque élément du tableau sur le spécifié valeur. Cependant, en fonction du compilateur et des paramètres d'optimisation, le code peut varier.
Pour plus d'informations sur le comportement du compilateur, reportez-vous au code d'assemblage généré pour les listes d'initialisation vides dans la question connexe : "Assemblage étrange du tableau 0 -initialisation."
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!