Maison > développement back-end > C++ > Comment `array[100] = {0};` initialise-t-il un tableau entier à zéro en C/C ?

Comment `array[100] = {0};` initialise-t-il un tableau entier à zéro en C/C ?

Barbara Streisand
Libérer: 2024-12-11 00:15:10
original
607 Les gens l'ont consulté

How Does `array[100] = {0};` Initialize an Entire Array to Zero in C/C  ?

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 :

  • Les pointeurs sont définis sur NULL.
  • Les types arithmétiques (y compris les caractères, qui sont promus en int) sont initialisés à zéro.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal