Maison > développement back-end > C++ > le corps du texte

Pourquoi `cout` imprime-t-il le caractère au lieu de l'adresse lorsque vous travaillez avec des pointeurs char ?

Mary-Kate Olsen
Libérer: 2024-11-04 04:52:02
original
625 Les gens l'ont consulté

Why does `cout` print the character instead of the address when working with char pointers?

Comprendre l'impression de pointeurs de caractères avec cout

Lorsque vous traitez des pointeurs de caractères, il est crucial de comprendre comment ils sont gérés dans différents environnements. Alors que print() avec les spécificateurs de conversion %u et %s donne le contrôle sur l'impression des adresses ou des chaînes, le défi se pose lors de l'utilisation de cout.

Considérez l'extrait de code suivant :

<code class="cpp">char ch = 'a';
char *cptr = &ch;
cout << cptr << endl;
Copier après la connexion

Ici, la sortie souhaitée est l'adresse de ch stockée dans cptr. Cependant, par défaut, cout aura tendance à traiter cptr comme une chaîne normale et à imprimer le caractère « a » au lieu de son adresse.

Résoudre le dilemme d'impression

Pour remédier à ce problème, nous devons pour forcer cout à interpréter cptr comme un pointeur vide plutôt que comme un pointeur char. Cela nous permet d'exploiter l'opérateur ostream& qui gère spécifiquement les pointeurs vides et imprime leurs adresses.

Pour y parvenir, nous pouvons utiliser un cast comme suit :

<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>
Copier après la connexion

En convertissant cptr en un pointeur vide, la résolution de surcharge sélectionne le bon opérateur, ce qui entraîne l'impression de l'adresse souhaitée.

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