Regardez la pièce de code suivante en C ++: si Tailleof (char) code> est de 1 octet, pourquoi la sortie montre-t-elle
Taillef ( A2) code> comme 4 et non 3 (comme dans le cas de
A1 code>)? p> p>
3 Réponses :
c Strings contient un terminateur null, ajoutant ainsi un caractère.
essentiellement ceci: p>
J'aime cette réponse pour sa déclaration d'équivalence d'initialisation, mais elle a plus de sens pour moi de parler de A2, code> non
A1 code> - l'init vous citez ici est ce que vous avez Obtenez en rembourrant la c-string dans
A2 code>.
pour A2, il s'agit d'une chaîne de sorte qu'il contient également le '\ n' p>
Correction, après le commentaire Ethan et Adam, ce n'est pas "\ n" bien sûr, mais Null Terminator qui est "\ 0 ' p>
Il n'y a pas de \ n code> (linefeed) à la fin de
A2 code>. Il y a un caractère NULL (
\ 0 code>) à la fin d'une chaîne. Honte sur toi, upvoter.
-1: faux, A2 code> ne contient pas
'\ n' code> à la fin mais plutôt
'\ 0' code>.
désolé vous avez raison, je voulais dire le terminateur null '\ 0' merci pour la correction
@miks Adam a commenté devant moi. Cependant, j'ai supprimé le bowvote après votre correction :)
C'est parce qu'il y a un caractère supplémentaire '\ 0' code> ajouté à la fin de la chaîne C, alors que la première variable,
A1 code> est une matrice de trois séparées caractères. p>
Tailleof code> vous indiquera la taille d'octets d'une variable, mais préférez
strlen code> si vous souhaitez la longueur d'une chaîne C au moment de l'exécution. P>
+1 Juger des réponses (et mon expérience avec les programmeurs junior), il s'agit d'une question qui provoque beaucoup de confusion et entraîne de nombreux insectes subtils pouvant être difficiles à trouver.