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

Comment puis-je imprimer correctement des pointeurs de fonction en C à l'aide de « cout » ?

Susan Sarandon
Libérer: 2024-12-30 02:07:09
original
446 Les gens l'ont consulté

How Can I Correctly Print Function Pointers in C   using `cout`?

Impression de pointeurs de fonction avec cout

En C, l'impression de pointeurs de fonction directement à l'aide de cout peut être problématique. Au lieu de cela, il est conseillé de convertir le pointeur de fonction en void* avant de l'imprimer. Ceci est démontré dans l'extrait de code suivant :

#include <iostream>
using namespace std;

int foo() {return 0;}

int main()
{
    int (*pf)();
    pf = foo;
    cout << "cout << pf is " << pf << endl;
    cout << "cout << (void *)pf is " << (void *)pf << endl;
    printf("printf(\"%p\", pf) is %p\n", pf);
    return 0;
}
Copier après la connexion

Sortie :

cout << pf is 1  
cout << (void *)pf is 0x100000b0c  
printf("%p", pf) is 0x100000b0c
Copier après la connexion

Comme vu ci-dessus, cout convertit implicitement le pointeur de fonction en bool, ce qui donne la sortie 1. Pour imprimer l'adresse réelle de la fonction, elle doit être convertie en void*.

Les pointeurs de fonction de type void* peuvent être imprimés directement en utilisant cout. En effet, void* est un type de pointeur générique qui peut contenir l'adresse de n'importe quel type, y compris les pointeurs de fonction.

Observation des pointeurs de fonction membre

Impression des pointeurs de fonction membre à l'aide void* ne fonctionne pas en raison de leur structure plus complexe. Cependant, selon la norme C, les valeurs r des pointeurs de fonction peuvent être converties en bool.

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