SofEvans :
La chaine "ABCDEFGHIJKLMNOPQRSTUVWXYZ", dans le premier cas est
non modifiable : elle est placée dans la zone mémoire attribuée au code du programme, pas dans celles attribuées aux variables du programme. Or my_evil_string() essaye de modifier cette chaine.
C'est également le cas ici :
1 2 3 4
| char *str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
my_evil_string(str);
// donc on doit écrire par précaution
// char const *str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
Dans le code utilisant un tableau, la situation est différente puisqu'il s'agit de
l'initialisation du tableau qui lui est modifiable.
Partager