Maison  >  Article  >  développement back-end  >  Comment imprimer des adresses avec des pointeurs de caractères à l'aide de « cout » ?

Comment imprimer des adresses avec des pointeurs de caractères à l'aide de « cout » ?

DDD
DDDoriginal
2024-11-03 21:10:03860parcourir

How to Print Addresses with Char Pointers Using `cout`?

Interprétation Cout des pointeurs de caractères

Contrairement à printf(), qui propose des spécificateurs de conversion spécifiques (%u ou %s) pour déterminer s'il faut imprime une adresse ou la chaîne entière pointée par un pointeur char, cout nécessite une approche explicite pour cette distinction.

Exemple de problème :

Considérez l'extrait de code suivant :

<code class="cpp">int main() {
  char ch = 'a';
  char *cptr = &ch;
  cout << cptr << endl;
  return 0;
}

Dans cet exemple, avec le compilateur GNU par défaut, cout interprète le pointeur char comme une chaîne de style C et tente d'imprimer le caractère pointé par cptr. Cependant, si l'intention est d'imprimer l'adresse de ch à la place, une approche différente est nécessaire.

Solution :

Pour imprimer l'adresse de ch en utilisant cptr avec cout , un cast de type explicite est requis. Ceci est réalisé en utilisant le static_cast<> opérateur, comme démontré ci-dessous :

<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>

En convertissant explicitement cptr en void *, la résolution de surcharge sélectionne l'opérateur ostream& approprié qui prend un pointeur void comme argument. Cela imprime correctement l'adresse de ch.

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