Bonsoir,

Envoyé par
deubelte
car marche pas. ca bug
Pourquoi?
Dans les deux cas, g est bien déclaré de manière équivalentes
Pas tout-à-fait.
Dans le premier cas, tu déclares un tableau de caractères et obtiens par la même occasion un pointeur pour le manipuler. Un tableau est une suite de variables, qui sont faites pour être modifiées, et leur espace est réservé dans la pile ou dans une autre zone inscriptible de la mémoire.
Dans le second cas, tu ne déclares qu'un pointeur vers un caractère ou une chaîne de caractère. Tu ne réserves pas d'espace pour cette chaîne. Cependant, tu initialises ce pointeur avec l'adresse de la chaîne que tu passes entre guillemets mais ce sont alors deux expressions distinctes.
En façade, une chaîne de caractères entre guillemets est une expression de type const char *. En coulisses, comme cette chaîne doit exister avant l'exécution du programme, le compilateur va soit la mettre avec le code, soit dans un segment dédié mais tout aussi en lecture seule.
Toutefois, tu peux quand même utiliser les guillemets pour initialiser le contenu d'un tableau de caractères :
char chaine [6] = "Hello";
... fonctionne. Le contenu de la chaîne sera bien copié à l'intérieur de ton tableau dès l'initialisation et, de là, tu pourras le modifier.
Partager