Ich stoße zufällig auf den folgenden Funktionszeiger.
%Vor%Es sieht aus wie ein Array von Funktionszeigern im folgenden Format, aber ich kann nicht sehen, was f - & gt; (* x ()) bedeutet. Wie interpretiere ich diesen unordentlichen Funktionszeiger?
%Vor%Mit John Bodes Hilfe mache ich ein Beispiel wie folgt.
%Vor%Ich könnte das erwartete Ergebnis bekommen.
%Vor%Und Sie finden eine bessere Implementierung hier .
Meine allgemeine Vorgehensweise besteht darin, den am weitesten links liegenden Bezeichner in der Deklaration zu finden und mich dann herauszuarbeiten, wobei ich daran denke, dass []
und ()
bind vor *
sind (dh *f()
wird normalerweise als *(f())
geparst) und *a[]
wird normalerweise als *(a[])
) analysiert.
Also,
%Vor%Wie würde solch ein Biest in der Praxis aussehen?
%Vor% Der Ausdruck &funclist
gibt einen Zeiger auf das Array zurück, also
x is a function returning pointer to array of pointer to function returning char
In diesem Fall f is an array of pointer to function returning char
Die Verwendung der Rechts-Links-Regel wäre von Vorteil.
Einige typedefs machen es klarer:
%Vor% Dies definiert charfunc_t
als Zeiger auf eine Funktion ohne Argumente, die char
zurückgibt.
funcarr_t
ist ein Array solcher Funktionszeiger.
x
ist eine Funktion, die einen Zeiger auf ein solches Array zurückgibt und jetzt wie folgt deklariert werden kann:
Tags und Links c c++ function-pointers