Maison > développement back-end > C++ > Comment les tableaux sont-ils initialisés avec des accolades en C et C ?

Comment les tableaux sont-ils initialisés avec des accolades en C et C ?

DDD
Libérer: 2024-12-13 02:41:10
original
293 Les gens l'ont consulté

How Are Arrays Initialized with Braces in C and C  ?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal