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; }
Ausgabe:
cout << pf is 1 cout << (void *)pf is 0x100000b0c printf("%p", pf) is 0x100000b0c
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!