Maison > développement back-end > C++ > Comment `sizeof` gère-t-il les littéraux de chaîne en C/C ?

Comment `sizeof` gère-t-il les littéraux de chaîne en C/C ?

Susan Sarandon
Libérer: 2024-12-11 10:00:16
original
512 Les gens l'ont consulté

How Does `sizeof` Handle String Literals in C/C  ?

Taille des littéraux de chaîne expliquée

L'extrait de code fourni met en évidence le comportement de l'opérateur sizeof avec différents littéraux de chaîne. Examinons les réponses aux questions soulevées.

  1. Pourquoi sizeof calcule-t-il la longueur de la chaîne littérale ?

L'opérateur sizeof calcule la taille en octets occupée par une expression donnée. Pour une chaîne littérale, il renverra le nombre de caractères, y compris le caractère de fin « » qui marque la fin de la chaîne. Dans ce cas, "f" a deux caractères ("f" et " "), donc sizeof("f") renvoie 2.

  1. La chaîne littérale a-t-elle un type différent lorsque donné à sizeof ?

Non, la chaîne littérale n'a pas de type différent lorsqu'elle est donnée à sizeof. Il conserve son type sous la forme d'un tableau de caractères constants. Cependant, il est important de noter que lorsqu'une chaîne littérale est transmise à une fonction ou utilisée dans une expression qui attend un pointeur, elle se transforme automatiquement en un pointeur de caractère. Mais lorsqu'il est transmis à sizeof, il conserve son type d'origine sous forme d'un tableau de caractères.

Dans cet exemple :

  • foo est un pointeur constant vers un caractère constant, donc sizeof(foo ) renvoie la taille d'un pointeur, qui est généralement de 4 octets sur un système 32 bits.
  • bar est un tableau de caractères constants, donc sizeof(bar) renvoie la taille du tableau, qui est de 2 octets (un pour le caractère 'b' et un pour le caractère ' ').

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