Comment le compilateur remplir les valeurs en char array[100] = {0};
? Mais quelle est la magie?
Je voulais savoir comment l'interne du compilateur initialise.
Comment le compilateur remplir les valeurs en char array[100] = {0};
? Mais quelle est la magie?
Je voulais savoir comment l'interne du compilateur initialise.
C'est pas de la magie.
Le comportement de ce code en C est décrit dans la section 6.7.8.21 de la C spécification (en ligne projet de C spec): pour les éléments qui n'ont pas de valeur spécifiée, le compilateur initialise les pointeurs à NULL et l'arithmétique types à zéro (et récursivement les applique à des agrégats).
Le comportement de ce code en C++ est décrit dans la section 8.5.1.7 du C++ cahier des charges (en ligne projet de C++ spec): le compilateur par défaut initialise les éléments qui n'ont pas de valeur spécifiée.
Il est également à noter qu'en C++ (mais pas de C), vous pouvez utiliser un vide d'initialiseur de liste, provoquant le compilateur par défaut-initialiser tous les éléments de la matrice:
char array[100] = {};
Comme pour ce genre de code que le compilateur peut générer lorsque vous faites cela, jetez un oeil à cette question: Étrange assemblage de la matrice 0-initialisation
La mise en œuvre est en place pour les développeurs de compilateurs.
Si votre question est "ce qui va arriver à une telle déclaration" - compilateur va régler le premier élément du tableau de la valeur que vous avez fournie (0) et tous les autres seront mis à zéro parce que c'est une valeur par défaut pour omis les éléments du tableau.
Si votre compilateur est GCC, vous pouvez également utiliser la syntaxe suivante:
tableau int[256] = {[0 ... 255] = 0};
Merci de regarder
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Designated-Inits.html#Designated-Inits
Notez que si elle est globale ou statique, il sera (probablement) être dans le .sev segment
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.