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
Barbara Streisandoriginal
2024-12-11 00:15:10662parcourir

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!

Déclaration:
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