12.1. Définition et initialisation d'une chaîne

Icône de l'outil pédagogique Définition et initialisation d'une chaîne

On veut créer une chaîne de caractères pour stocker un message prédéfini qui ne changera pas (par exemple : Bonjour !). Les définitions (presque) équivalentes :

char texte[9] = "bonjour!" ; /* 9 éléments sont réservés pour le tableau de char */

permettent de créer un tableau de 9 éléments char, dans lequel sont stockés les 8 caractères 'b', 'o', 'n', 'j', 'o', 'u', 'r', '!' suivis par le "caractère nul" 0 (parfois noté '\0’, c'est‐à‐dire dont le code ASCII est 0).
L'élément texte[0] contient le caractère 'b', texte[7] contient '!' et le dernier élément texte[8] contient le caractère nul 0, ajouté par le compilateur. Voir dessin plus bas.

L’écriture entre guillemets de la valeur de la chaîne "bonjour!" est une notation qui permet de simplifier l'initialisation classique des tableaux :

char texte[ ] = { 'b','o','n','j','o','u','r','!', 0 }; /* juste, mais à éviter !! */

La taille de la chaîne est en général supérieure à la taille de la valeur initiale, pour permettre de modifier celle‐ci par la suite. Par exemple :

char texte[50] = "bonjour!" ; /* 50 élements réservés, 9 utilisés pour l’instant */

 

Figure 12 ‐‐3 : Allocation mémoire d’une chaîne de caractères


Les règles pour la définition et l'initialisation des chaînes de caractères sont les suivantes :

– la « constante chaîne de caractères », utilisée pour initialiser le tableau de char, se représente entre guillemets " ". Ne pas confondre avec les apostrophes ' ' qui entourent un caractère ;

– toute chaîne de caractères est terminée par le caractère nul 0. Celui‐ci est placé automatiquement par le compilateur . Au‐delà du caractère nul se trouvent les éléments non utilisés du tableau de char ;

– le compilateur peut calculer lui‐même la taille de la chaîne (nombre de caractères+1) si celle‐ci n'est pas précisée entre crochets. Mais il faut réserver cette facilité aux chaînes constantes, c’est‐à‐dire initialisées à la définition et jamais modifiées ensuite.

Exemple 65 : Définition et initialisation de chaînes :

Rappel : le nom d'un tableau (ici, le nom de la chaîne) représente l'adresse du tableau (c'est‐à‐dire l'adresse de son premier élément) : texte équivaut à &texte[0]. Il est inutile de faire précéder le nom du tableau de l'opérateur &.