Funktionspointer - Adressoperator
-
Hallo zusammen
Mir ist folgendes aufgefallen:
Angenommen ich habe folgenden COde:
void Hello(int a, int b); typedef void (*fp)(int, int);Dann scheint
fp a = &Hello;identisch zu sein mit
fp b = Hello;Was ist denn nun korrekt und ordentlicher Programmierstil?
-
Beides.
-
Funktionspointer schrieb:
Hallo zusammen
Mir ist folgendes aufgefallen:
Angenommen ich habe folgenden COde:
void Hello(int a, int b); typedef void (*fp)(int, int);Dann scheint
fp a = &Hello;identisch zu sein mit
fp b = Hello;Was ist denn nun korrekt und ordentlicher Programmierstil?
fp a = &Hello; // Der Adressoperator ist vollkommen überflüssig - Hello repräsentiert den Einsprungspunkt in die Funktion, d.h.// deren Adresse.
fp b = Hello; // !
-
Ich meine irgenwdo mal gelesen zu haben, dass die Version ohne Addressoperator nicht Standardkomform sei, aber oft unterstützt wird.
Vl find ich ja noch was im Standard, oder den Artikel, aber mit Addressop ist auf jeden Fall richtig
-
Standard, Paragraph 4.3 schrieb:
An lvalue of function type T can be converted to an rvalue of type “pointer to T.” The result is a pointer to the function.
Felix
-
JustAnotherNoob schrieb:
Ich meine irgenwdo mal gelesen zu haben, dass die Version ohne Addressoperator nicht Standardkomform sei, aber oft unterstützt wird.
Kann es sein, dass das auf Memberfunktionspointer bezogen war? Da braucht man in der Tat immer den Adressoperator (
&Class::foo).