Heim >Backend-Entwicklung >C++ >Warum werden Funktionsnamen in C als Funktionszeiger verwendet?
Funktionsnamen als Funktionszeiger: Eine Designbegründung
In C ist die Verwendung von Funktionsnamen als Funktionszeiger gleichbedeutend mit der Anwendung der Adresse von Operator zum Funktionsnamen hinzufügen. Dieses Verhalten scheint möglicherweise nicht mit anderen Teilen der Sprache übereinzustimmen und wirft Fragen über die Design-Rationale auf.
Das ANSI C90-Begründungsdokument bietet Einblicke in diese Design-Entscheidung:
(&f)(); // Explicit address-of operator f(); // Implicit conversion to function pointer (*f)(); // Deference of a function pointer (**f)(); // Deference twice (***f)(); // Deference three times
Die Erklärung für das Fehlen einer impliziten Konvertierung vom Funktionstyp in den Zeigertyp in Rückgabekontexten liegt im Konzept von „ Rückkehrtyp-Dekoration. In C sind Funktionsrückgabetypen Teil der Signatur der Funktion und können nicht geändert werden. Daher kann eine Funktion nicht implizit einen Zeiger auf sich selbst zurückgeben.
Das obige ist der detaillierte Inhalt vonWarum werden Funktionsnamen in C als Funktionszeiger verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!