Maison > développement back-end > C++ > Comment imprimer des pointeurs de fonction en C à l'aide de « cout » et « printf » ?

Comment imprimer des pointeurs de fonction en C à l'aide de « cout » et « printf » ?

Mary-Kate Olsen
Libérer: 2024-12-27 22:33:11
original
211 Les gens l'ont consulté

How Do I Print Function Pointers in C   Using `cout` and `printf`?

Impression de pointeurs de fonction avec cout et printf

En C , les pointeurs de fonction peuvent être imprimés en utilisant cout ou printf, mais avec un comportement différent selon le spécificateur de format utilisé.

cout Opérateur

Par défaut, cout traite les pointeurs de fonction comme des valeurs booléennes et imprime 1 pour les pointeurs non nuls et 0 pour les pointeurs nuls. Pour imprimer l'adresse réelle, elle doit être explicitement convertie en void* :

cout << (void *)pf;
Copier après la connexion

Fonction printf

Lors de l'utilisation de printf avec le spécificateur de format %p, les pointeurs de fonction sont traités comme des pointeurs et leurs adresses sont imprimées en hexadécimal :

printf("%p", pf);
Copier après la connexion

Pointeurs de fonction comme Booléens

Les pointeurs de fonction sont en effet traités comme des booléens en C . Cela est dû à la règle de conversion booléenne qui permet de convertir des pointeurs en bool, où un pointeur non nul est évalué comme vrai et un pointeur nul comme faux. Ce comportement peut être inattendu s'il n'est pas pris en compte.

Pointeurs de fonction membre

L'impression de pointeurs de fonction membre est plus complexe car ce ne sont pas de simples pointeurs. Cependant, il est possible d'imprimer l'adresse de la fonction membre à l'aide d'une astuce :

cout << (void *)(*(int **)&pf);
Copier après la connexion

Cela profite du fait que l'adresse de la fonction membre est stockée dans le deuxième élément du pointeur de fonction, et convertit à annuler*.

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