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

Pourquoi les littéraux de chaîne ont-ils des valeurs L en C et C ?

Patricia Arquette
Libérer: 2024-11-30 11:02:10
original
909 Les gens l'ont consulté

Why Are String Literals L-Values in C and C  ?

L'anomalie des littéraux de chaîne en tant que valeurs L

En programmation, les littéraux représentent des valeurs constantes qui ne peuvent pas être modifiées. Cependant, en C et C , les chaînes littérales constituent une exception à cette règle. Alors que tous les autres littéraux sont des valeurs r (temporaires), les littéraux de chaîne possèdent le trait particulier d'être des valeurs l.

Raison d'être des littéraux de chaîne en tant que valeurs L

Ce comportement unique découle de la nature intrinsèque des chaînes littérales. Contrairement aux littéraux de type de données de base (par exemple, entiers, nombres à virgule flottante), les littéraux de chaîne ressemblent à des objets. En C, les tableaux sont la construction la plus proche des objets, et les chaînes littérales sont fondamentalement des tableaux de caractères.

Signification des valeurs L

Les valeurs L indiquent des objets qui peuvent être affecté et résider dans un emplacement de mémoire identifiable. Dans le cas des tableaux, le fait d'être des valeurs l permet une manipulation directe des éléments individuels. À l'inverse, les valeurs R ne peuvent pas être attribuées directement et représentent des valeurs temporaires.

Considérations sur le modèle de mémoire

La distinction entre les valeurs L et les valeurs R est ancrée dans l'ordinateur. architecture. Les premiers ordinateurs utilisaient des régions de mémoire distinctes pour la modification (en écriture) et la récupération (en lecture seule). Les valeurs L représentaient des données modifiables, tandis que les valeurs r servaient de références immuables.

Considérations de conception alternatives

Les littéraux de chaîne auraient pu être conçus avec des types de pointeurs, ressemblant à des pointeurs constants pour enchaîner « contenu ». Toutefois, une telle approche aurait diminué leur utilité. Par exemple, l'opérateur sizeof leur aurait été inapplicable.

Évolution en C99

La norme C99 a introduit les littéraux composés, accordant le statut de valeur L aux autres littéraux. Ce changement souligne en outre que les valeurs L ne se limitent plus aux seuls littéraux de chaîne, mais deviennent la norme.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal