char* string = "Test";
Ne fais pas ça. Cela devrait donner un avertissement parce que c'est vraiment une chaîne statique, mais ce n'est pas le cas. Si vous écrivez à la chaîne, elle explosera.
const char* string = "Test";
Correct.
char* const string = "Test";
Non correct. Cela signifie que le pointeur string
ne peut pas changer mais son contenu peut, ce qui n'est pas très utile en plus d'être faux.
const char* const string = "Test";
Correct. Maintenant, ni le pointeur string
ni son contenu ne peuvent changer. Je dérange rarement avec const sur le côté droit d'un *
mais il a ses utilisations.
Si vous voulez vraiment une chaîne inscriptible utiliser
char string[] = "Test";
C99 - _6.4.5: Pour les littéraux de chaîne de caractères, les éléments du tableau ** ont type char **, et sont initialisés avec les octets individuels du séquence de caractères multi-octets; mais d'autre part: _Si le programme tente de modifier un tel tableau, le comportement est indéfini. –