Octet nul et tableaux en C
Si je déclare un char tableau de 10 caractères, comme si...
char letters[10];
suis-je créer un ensemble d'emplacements de mémoire qui sont représentés comme des caractères à partir de l'indice 0 à 9 puis le 10, l'indice de l'octet nul?
si oui, est-ce à dire que je suis vraiment la création de 11 emplacements dans la mémoire pour le tableau (de 0 à 10) avec le dernier élément étant l'octet nul ou dois-je 10 emplacements de mémoire (0 à 9), puis C ajoute l'octet null à une nouvelle position (si le tableau est de 1 octet de plus que j'ai déclaré)?
Grâce
source d'informationauteur CS Student
Vous devez vous connecter pour publier un commentaire.
Semble que vous êtes confus avec des tableaux et chaînes de caractères.
Lorsque vous déclarez
alors qu'il se réserve, à seulement 10 octets contigus dans un emplacement de mémoire.
Dans C l'indexation commence à partir de
0
. Vous pouvez accéder à votre mémoire allouée emplacement deletters[0]
àletters[9]
. Accéder à l'emplacementletters[10]
invoquera comportement indéfini. Mais quand vous déclarer comme ceciou
puis il y a 11 octets de l'espace sont affectés dans la mémoire; 10 pour
0123456789
et un pour\0
(caractère NUL).Prendre un autre exemple
D'entrée:
De sortie:
Ont maintenant un coup d'oeil à l'emplacement de la mémoire
Oui
Pas.
Vous avez réservé un espace pour exactement 10
char
s. Rien d'autre. Rien ne sera réglé automatiquement le dernier octet à zéro, ou agir comme si elle était. Il n'y a pas de 11ème char qui pourrait tenir un zéro, vous n'avez que 10.Si vous allez l'utiliser avec les fonctions de chaîne, il est de votre devoir en tant que programmeur de s'assurer que votre chaîne est terminée par null. (Et ici, ce qui signifie qu'il ne pourra détenir plus de 9 caractères significatifs.)
Quelques exemples courants à l'initialisation:
Et tout au long de votre programmation dans [Turbo C++ (C++), essayez d'utiliser F7 ou F8 et Alt+F4, vous pouvez voir ce qui se passe à l'intérieur qui seront bien utiles pour un débutant qui, en ayant des doutes comme ce
Quand jamais vous la déclaration d'une variable d'un autre emplacement de mémoire sera consacrée à cette variable.
Dans le cas de la variable de tableau comme
Dix espace de mémoire obtiendrez attribués aux lettres variable.
Et la taille de l'allocation de mémoire obtiendrez varier selon le type de données(c'est à dire de type int,char,float...).
De nouveau dans votre cas: si vous souhaitez stocker un nom comme "csstudent" dans le tableau que vous avez déclarer un tableau de taille de "dix" même "csstudent" la taille est "neuf", parce que le dernier indice est de stocker de "\0" indique la fin de la chaîne
//1000,1001 sont l'espace mémoire alloué,peut varier dans le système