C++ – Les littérales chaînes
Une littérale chaîne est une séquence de caractères encadrées de guillemets. On la déclare comme ceci:
const char *str = "ceci est un string literal";
Mais C++ accepte pour des raisons de compatibilité avec du code ancien qu’on laisse tomber le const:
char *str = "ceci est un string literal";
ceci est accepté mais désapprouvé (deprecated). La raison en est simple. Si vous écrivez:
char *str = "ceci est un string literal";
cela veut dire que str étant un pointeur vers un caractère non-constant, vous pouvez le modifier.
*str = 'C';
est tout à fait légal même s’il vous est interdit de modifier une chaîne littérale. Autrement dit, votre compilateur ne rouspètera pas mais lorsque vous exécuterez ce code vous pouvez très bien provoquer un Segmentation fault (core dumped) sous Linux ou un Access Violation sous Windows.
Posted: mars 10th, 2008 under C++.
Comments: none
Tweet