dise que je crée un tableau code> char code> et je suppose que le tableau de caractères est vide. Si je vérifie la valeur du premier élément du tableau ( arr [0] code>), quel serait le résultat de cette expression? p>
4 Réponses :
Si c'est une variable code> auto code>, elle sera remplie de jumelage à moins que vous l'initialisez explicitement, il n'y a donc pas de valeur par défaut. Bien sûr, si vous initialisez le tableau (ce que vous avez rempli le tableau avec des valeurs initiales explicitement en utilisant quelque chose Comme Notez la différence entre la déclaration et l'initialisation. p> à bien sûr, la déclaration et l'initialisation peuvent être effectuées à la fois: p> La même chose est vraie pour les tableaux: p> arr [0] code> contient probablement une valeur apparemment aléatoire jusqu'à ce qu'il soit explicitement modifié pour contenir quelque chose d'autre.
memset () code> ou un
pour code> boucle ou appel de la fonction ou quel que soit autre moyen), vous obtiendrez exactement ce que vous attendez: la valeur avec laquelle vous l'initialisez.
Auto code> Variable entière. Il a une valeur non définie en ce moment (Junk). A
10 code>. P>
void f(void) {
int x[2] = { 1, 2 };
}
Lorsque vous initiez une matrice. Vous allociez une mémoire statique. Et puis vous obtiendrez les valeurs de la mémoire allouée afin que ce soit des valeurs aléatoires
si vous souhaitez définir l'ensemble de la matrice à 0 puis (selon Hunter McMillen Strong> Remarque) P> memset(arr,0,sizeof_your_arr);
Vous pouvez également faire: Char Array [Taille] = {0} code>
Ne vous attendez jamais à une variable d'avoir une certaine valeur lorsque vous l'initialisez d'abord que si vous le spécifiez explicitement. Il sera rempli de choses aléatoires à moins que vous ne le réglez vous-même. P>
J'ai comparé sa valeur avec '\ 0' ex: arr [0] == '\ 0' et il s'avère être vrai, je suppose que c'est parce que cet espace en mémoire est vraiment vide mais dans le cas où il a quelque chose d'autre Je me tromperais, non?
Oui, vous ne savez jamais vraiment ce qui peut déjà être là.
Cela dépend de l'endroit où et comment le tableau est déclaré.
Si le tableau est déclaré à la portée du fichier (en dehors de toute fonction), ou est déclarée si le tableau est déclaré à la portée du bloc (dans une fonction ou un bloc) et n'est pas déclaré Si le tableau a été explicitement initialisé, il contient tout ce qui était dans l'initialisateur. P> EDIT STRORT> P> En réponse aux commentaires ci-dessous, notez que vous ne devriez pas compter sur l'initialisation implicite pour les variables de périmètre de blocage. Si vous avez besoin d'un tableau de périmètre de blocage à zéro sur la création, utilisez une initialiseur: P> statique code> et n'a pas explicitement Initializer, puis le contenu de la matrice sera initialisé à 0. p>
statique code>, et N'a pas d'initialiseur explicite, le contenu de la matrice est indéterminé em> (essentiellement des valeurs de déchets, dont certaines peuvent être des représentations de piège). p>
char foo[N] = {0};
En tout cas, c'est une mauvaise forme de compter sur elle. Les variables qui doivent être zéro doivent être initialisées à zéro, explicitement.
@John Bode: Qu'est-ce que vous dites est tout factuel - je crains que la tarification de l'Op puisse être "Oh - je devrais faire toutes mes variables statiques, alors je n'ai pas à les initialiser." Une meilleure réponse aurait pu toucher (toutefois brièvement) sur des questions de "définition" vs "Déclaration", ou pourquoi i> une variable doit être automatique vs Statique vs. alloué à partir du tas. Je suis d'accord avec Jorberg. A MON HUMBLE AVIS...
Je pense que vous pouvez simplement dire char foo [n] = {}; code>.
J'aimerais préciser qu'une valeur indéterminée peut également être 0. Cela signifie que si FOO [0] était initialisé par défaut comme 0 sans initialiseur explicite, FOO aurait effectivement 0 longueur.
Que s'est-il passé quand tu as essayé?
«Je suppose que le tableau de charme est vide '- qu'entendez-vous par cela?
En outre, qu'entendez-vous par «i initialisez un tableau de charret»? Si vous l'initialisez, il aura la valeur de l'initialisateur, mais je soupçonne que vous ne voulez vraiment pas dire «initialiser». Vous pouvez résoudre certaines questions (et peut-être éviter les réponses atrocement mauvaises ci-dessous), mais afficher votre code actuel.
Vous devez ajouter plus de détails à votre message d'origine, comme le résultat d'impression de la valeur et de ce que vous attendiez. Quelles langues avez-vous déjà étudié? Je demande cela, parce que je suis convaincu avec tous les connaissances Python, Perl, Ruby et Scala, certaines personnes apprenant que c Peut penser que quelque chose de spécial se produit lorsque vous testez une valeur dans un tableau
Downvote parce que @ user1723575 aurait facilement pu répondre à cette question en l'essayant ou en recherchant rapidement la recherche Google (ou la recherche de débordement de pile de cette matière). Je ne vois pas pourquoi il y a 5 réponses à cette question triviale.
J'ai Googled "Valeur initiale de Tray Array" aujourd'hui (en 2014). Cette question de dépassement de pile était le premier coup. J'ai presque pensé que c'était un gaspillage de mon temps à venir ici parce que la question avait été révélée et «fermée comme non une vraie question». Heureusement, la réponse de John Bode m'a donné la réponse que je cherchais.
Je suis d'accord avec @timgradwell, la réponse ci-dessous a aidé et j'ai compris ce que l'utilisateur demandait. L'astucieux aurait pu utiliser de l'aide de la communauté pour rendre la question plus claire. Lorsque vous êtes nouveau à la programmation, vous n'avez peut-être pas le vocabulaire d'articuler ce dont vous avez besoin (par conséquent question de modification de la communauté).