© Éditions Eyrolles
147
chapitre n° 8
Les chaînes de caractères
réserve simplement l’emplacement pour un pointeur sur un caractère (ou une suite de caractères).
En ce qui concerne la constante :
"bonjour"
le compilateur a créé en mémoire la suite d’octets correspondants mais, dans l’affectation :
adr = "bonjour"
la notation bonjour a comme valeur, non pas la valeur de la chaîne elle-même, mais son
adresse ; on retrouve là le même phénomène que pour les tableaux.
Voici un schéma illustrant ce phénomène. La flèche en trait plein correspond à la situation
après l’exécution de l’affectation : adr = "bonjour" ; les autres flèches correspondent à
l’évolution de la valeur de adr, au cours de la boucle.
1.3 Initialisation de tableaux de caractères
Comme nous l’avons dit, vous serez souvent amené, en C, à placer des chaînes dans des
tableaux de caractères.
Mais, si vous déclarez, par exemple :
char ch[20] ;
vous ne pourrez pas pour autant transférer une chaîne constante dans ch, en écrivant une
affectation du genre :
ch = "bonjour" ;
En effet, ch est une constante pointeur qui correspond à l’adresse que le compilateur a attribuée au tableau ch ; ce n’est pas une lvalue ; il n’est donc pas question de lui attribuer une
autre valeur (ici, il s’agirait de l’adresse attribuée par le compilateur à la constante chaîne
"bonjour").
En revanche, C vous autorise à initialiser votre tableau de caractères à l’aide d’une chaîne
constante. Ainsi, vous pourrez écrire :
char ch[20] = "bonjour" ;
adr
o
\0
r
u
o
j
n
b
Delannoy Livre.book Page 147 Mercredi, 6. mai 2009 4:26 16
147
chapitre n° 8
Les chaînes de caractères
réserve simplement l’emplacement pour un pointeur sur un caractère (ou une suite de caractères).
En ce qui concerne la constante :
"bonjour"
le compilateur a créé en mémoire la suite d’octets correspondants mais, dans l’affectation :
adr = "bonjour"
la notation bonjour a comme valeur, non pas la valeur de la chaîne elle-même, mais son
adresse ; on retrouve là le même phénomène que pour les tableaux.
Voici un schéma illustrant ce phénomène. La flèche en trait plein correspond à la situation
après l’exécution de l’affectation : adr = "bonjour" ; les autres flèches correspondent à
l’évolution de la valeur de adr, au cours de la boucle.
1.3 Initialisation de tableaux de caractères
Comme nous l’avons dit, vous serez souvent amené, en C, à placer des chaînes dans des
tableaux de caractères.
Mais, si vous déclarez, par exemple :
char ch[20] ;
vous ne pourrez pas pour autant transférer une chaîne constante dans ch, en écrivant une
affectation du genre :
ch = "bonjour" ;
En effet, ch est une constante pointeur qui correspond à l’adresse que le compilateur a attribuée au tableau ch ; ce n’est pas une lvalue ; il n’est donc pas question de lui attribuer une
autre valeur (ici, il s’agirait de l’adresse attribuée par le compilateur à la constante chaîne
"bonjour").
En revanche, C vous autorise à initialiser votre tableau de caractères à l’aide d’une chaîne
constante. Ainsi, vous pourrez écrire :
char ch[20] = "bonjour" ;
adr
o
\0
r
u
o
j
n
b
Delannoy Livre.book Page 147 Mercredi, 6. mai 2009 4:26 16
