Je n'ai que peu de doutes sur les chaînes littérales en C++.Littéraux de chaînes
char *strPtr ="Hello" ;
char strArray[] ="Hello";
Maintenant strPtr et strArray sont considérés comme des littéraux de chaîne. Selon ma compréhension, les littéraux de chaîne sont stockés dans la mémoire morte, donc nous ne pouvons pas modifier leurs valeurs.
Nous ne pouvons pas
strPtr[2] ='a';
and strArray[2]='a';
Les deux déclarations ci-dessus devraient être illégales. Le compilateur doit renvoyer des erreurs dans les deux cas.
Le compilateur conserve les littéraux en chaîne en lecture seule, donc si nous essayons de les modifier, le compilateur lance des erreurs.
Les données const sont également considérées comme étant en lecture seule.
Est-ce que les littéraux de chaîne et les données const sont traités de la même façon? Est-ce que je peux enlever la constance en utilisant const_cast de la chaîne littérale peut changer sa valeur?
Où exactement les littéraux de chaîne sont-ils stockés? (dans la section de données du programme)
"Le type déclaré de strPtr est", voulez-vous dire strArray? – 4pie0