Maison >développement back-end >C++ >Pourquoi les littéraux de chaîne sont-ils des valeurs L en C et C alors que les autres littéraux sont des valeurs R ?

Pourquoi les littéraux de chaîne sont-ils des valeurs L en C et C alors que les autres littéraux sont des valeurs R ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-28 11:15:12903parcourir

Why Are String Literals L-Values in C and C   While Other Literals Are R-Values?

Pourquoi les littéraux de chaîne sont des valeurs L alors que d'autres littéraux sont des valeurs R

En C et C, les littéraux de chaîne sont une exception à la règle selon laquelle tous les littéraux sont r -valeurs. La norme C 03 stipule que, alors que les autres littéraux sont des valeurs r, les littéraux de chaîne sont des valeurs l. De même, la norme C99 définit les littéraux de chaîne comme des valeurs L.

Raison d'être

Cette distinction découle de la nature des littéraux de chaîne en tant qu'objets. Contrairement aux autres littéraux, qui représentent des valeurs fixes, les littéraux de chaîne sont des objets de type tableau. En C, les tableaux ne peuvent exister que sous forme de valeurs l dans les expressions.

Pour rendre les chaînes littérales plus utiles, il ne serait pas pratique de les définir comme ayant un type pointeur au lieu d'un type tableau. Cela empêcherait l'application de l'opérateur sizeof sur les littéraux de chaîne.

Le cas des littéraux composés

La norme C99 a introduit les littéraux composés, qui sont également des valeurs l. Leur introduction suggère un changement vers la norme selon laquelle les littéraux sont des valeurs l plutôt qu'une exception spéciale. Les littéraux composés permettent la création d'objets temporaires initialisés avec une valeur spécifique. Comme les chaînes littérales, ils existent sous forme de valeurs L.

Contexte historique

La raison de cette distinction peut également être ancrée dans l'architecture matérielle. Dans les premiers ordinateurs, les chaînes étaient stockées sous forme de tableaux de caractères plutôt que de pointeurs vers des tableaux de caractères. Ce contexte historique a peut-être influencé le choix de définir les littéraux de chaîne comme des valeurs l.

Conclusion

Les littéraux de chaîne sont définis comme des valeurs l en C et C car ce sont des objets de type tableau. Alors que les autres littéraux sont des valeurs fixes, les littéraux de chaîne sont des objets qui peuvent être modifiés ou référencés. Cette distinction permet une utilisation plus flexible des chaînes littérales dans la programmation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn