La réponse dépend entièrement de la langue en question. Mais C est généralement une bonne langue pour voir comment les choses se passent dans les coulisses.
In C:
Dans les chaînes C sont réseau de char
avec un 0 à la fin:
char str[1024];
strcpy(str, "hello ");
strcpy(str, "world!");
Derrière les scènes str [0] == 'H' (qui a un valeur int), str [1] == 'e', ... str [11] == '!', str [12] == '\ 0'; Un caractère est simplement un nombre qui peut contenir l'une des 256 valeurs. Chaque caractère a une valeur numérique.
En C++:
chaînes sont pris en charge de la même manière que C mais vous avez aussi un type string
qui fait partie de la STL.
Les littéraux de chaîne font partie du stockage statique et ne peuvent pas être modifiés directement sauf si vous souhaitez un comportement indéfini.
Son implémentation dépend de la manière dont le type de chaîne fonctionne réellement en coulisses, mais les objets chaîne eux-mêmes sont mutables.
En C#:
chaînes sont immuables. Ce qui signifie que vous ne pouvez pas changer directement une chaîne une fois créée. Quand vous faites + = ce qui se passe, une nouvelle chaîne est créée et votre chaîne référence maintenant cette nouvelle chaîne.
quel langage de programmation? C++? C#? –
Dans quelle langue? La réponse est _entirely_ dépendante de la langue. Dans certaines langues, les chaînes sont immuables; dans d'autres, ils ne le sont pas. Certaines langues ont différents types de chaînes. –
Un vrai compilateur intelligent peut même être en mesure d'arriver à la conclusion: 'print (" foobar ")' - selon la langue/exécution/obligations contractuelles et "intelligence" –