Heim > Backend-Entwicklung > C++ > Wie kann ich Funktionszeiger in C mit „cout' korrekt drucken?

Wie kann ich Funktionszeiger in C mit „cout' korrekt drucken?

Susan Sarandon
Freigeben: 2024-12-30 02:07:09
Original
444 Leute haben es durchsucht

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

Funktionszeiger mit cout drucken

In C kann das direkte Drucken von Funktionszeigern mit cout problematisch sein. Stattdessen empfiehlt es sich, den Funktionszeiger vor dem Drucken in void* umzuwandeln. Dies wird im folgenden Codeausschnitt demonstriert:

#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;
}
Nach dem Login kopieren

Ausgabe:

cout << pf is 1  
cout << (void *)pf is 0x100000b0c  
printf("%p", pf) is 0x100000b0c
Nach dem Login kopieren

Wie oben gesehen, konvertiert cout den Funktionszeiger implizit in bool, was zur Ausgabe 1 führt. Zum Ausdrucken die tatsächliche Adresse der Funktion, sie muss in void* umgewandelt werden.

Funktionszeiger vom Typ void* können direkt mit gedruckt werden cout. Dies liegt daran, dass void* ein generischer Zeigertyp ist, der die Adresse jedes Typs, einschließlich Funktionszeigern, enthalten kann.

Member-Funktionszeiger beobachten

Member-Funktionszeiger drucken mit void* funktioniert aufgrund ihrer komplexeren Struktur nicht. Gemäß dem C-Standard können R-Werte von Funktionszeigern jedoch in Bool konvertiert werden.

Das obige ist der detaillierte Inhalt vonWie kann ich Funktionszeiger in C mit „cout' korrekt drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage