
Envoyé par
Pierre Maurette
On va reprendre quelques trucs:
"petrus" est une constante littérale, c'est un pointeur constant, vers zone non modifiable de 7 catactères, les lettres de "petrus" + le '\0' final.
Donc "" est un pointeur constant vers une zone d'un seul caractère, le '\0' final.
char chaine[38]; déclare un tableau de 38 char. Si c'est une globale (en gros) le tableau est initialisé automatyiquement par des 0, ou '\0'. Si c'est une variable locale (automatique), le contenu est aléatoire.
char chaine[] = "petrus"; est équivalent à
char chaine[7] = "petrus";
Le tableau chaine est initialisé par les lettres de "petrus" plus le '\0' final. En quelque sorte, par copie de la constante "petrus".
char chaine[38] = "petrus"; est une initialisation partielle. Dans ce cas, même si chaine est une variable locale (automatique), l'initialisation est complétée par des '\0' jusqu'au bout, sauf erreur de ma part.
Donc:
char chaine[38] = "";
force chaine à être initialisée à 38 '\0', même s'il s'agit d'une variable locale (automatique).
Dans tous les cas, chaine est un tableau, initialisé d'une façon ou d'une autre, mais en tant que tel, c'est une zone modifiable.
Partager