Main menu:

Site search

Categories

mars 2008
L M M J V S D
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Archive

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.