conversion obsolète de constante de chaîne en ‘char *’ dans c

Je travaille avec des cordes.

Chaque fois que j’exécute le programme suivant, une erreur survient lorsque la conversion déconseillée de constante de chaîne à ‘char ‘ dans c * sur la ligne char *p = "hello"

Qu’est-ce que je fais mal?

Qu’est-ce que cette erreur signifie? Comment puis-je la corriger?

Mon code est:

 #include int main() { char *p = "hello"; printf("%s",p+1); return 0; } 

Cela devrait être un avertissement (bien que vous ayez peut-être configuré votre compilateur pour qu’il traite les avertissements comme des erreurs, ce qui est souvent une bonne idée).

Ce que vous voulez, c’est: char const *p = "hello"; au lieu.

Tenter de modifier un littéral de chaîne donne un comportement indéfini. La const vous empêche de le faire par accident (par exemple, le code qui tente d’écrire via le pointeur ne sera pas compilé, sauf si vous supprimez le qualificatif const , comme avec un transt).

Ceci est un avertissement, car la chaîne “Hello” est une constante et vous essayez de la stocker dans un caractère non const *. Pour résoudre le problème, soit le faire

const char* p = "Hello" ou char[] p = "Hello"