voilà j'ai compilé ce programme:
#include <stdio.h>
#include <conio.h>
void main(void)
{
int i;
char *str0 = "Hello";
char str1[]="Hello";
printf ("str0=%s str1=%s\n",str0,str1);
printf ("\n&str0=%d str0=%d Hello=%d str0->=%c\n",&str0,str0,"Hello",*str0);
printf ("\n&str1=%d str1=%d Hello=%d str1->=%c\n",&str1,str1,"Hello",*str1);
getch();
/* *scr0='a'; erreur à l'execution */
*str1='a';
printf ("\n&str0=%d str0=%d Hello=%d str0->=%c\n",&str0,str0,"Hello",*str0);
printf ("\n&str1=%d str1=%d Hello=%d str1->=%c\n",&str1,str1,"Hello",*str1);
getch();
}
sous visual C++ en reprenant l'exemple de la doc de TIGCC qui explique la différence entre ces deux déclarations : char *str = "Hello"; et char str[] = "Hello";
mais ya des trucs que je comprend pas
1/ L'erreur à l'execution mais ça doit être à cause VC++ donc c pas grave ....
2/ Le résultat du prog
str0 = Hello str1=Hello &str0=1245048 str0=4325520 Hello=4325520 str0->=H &str1=1245040 str1=1245040 Hello=4325520 str1->=H &str0=1245048 str0=4325520 Hello=4325520 str0->=H &str1=1245040 str1=1245040 Hello=4325520 str1->=a
j'espère que je me trompe mais j'ai comme l'impression que ça signifie que str1 pointe sur lui même tout en pointant sur le tableau qui contient la chaîne "Hello" parce que je peux la modifier ... enfin bref je comprend rien
si quelqu'un peu m'expliquer le problème merci


. Au dernier printf j'aurais donc dû obtenir
C'est juste que sans mutable, on ne peut pas utiliser systématiquement des const, parce que le fait de ne rien toucher du tout dans une structure passée en tant que const est souvent très contraignant (imagine un compteur de référence, ou un compteur d'utilisations pour le debug ou d'autres choses qui ne changent pas fondamentalement la sémantique de la structure, tout en changeant une partie de la représentation binaire). Résultat, en général je n'utilise jamais des const en C. Ca ne paraît donc pas déraisonnable de ne pas utiliser des 'const char *' pour les chaînes non plus si on ne s'en sert pas ailleurs... (c'est juste une convention différente, même si celle avec les "const" permet d'éviter des erreurs de débutant et n'est donc pas une si mauvaise idée que ça)

(donc coût supplémentaire lié à la recherche de la bonne position dans cette variable, etc...) Pour moi, c'est clairement une faute de conception du mot-clé 'const', parce que quand on va écrire cette nouvelle fonction membre, on va devoir modifier toute l'interface, comme tu le dis :