Wie soll ich ein Array von Funktionszeigern in C verwenden?
Wie kann ich sie initialisieren?
c
initialization
function-pointers
Der Typ mit dem Hut
quelle
quelle
(*p[4]) (int, int) {sum,substract,mul,div}
Die obigen Antworten können Ihnen helfen, aber Sie möchten möglicherweise auch wissen, wie Sie ein Array von Funktionszeigern verwenden.
Sie können einem einzelnen Funktionszeigerarray nur die Adressen von Funktionen mit demselben Rückgabetyp und denselben Argumenttypen sowie keine Argumente zuweisen.
Sie können auch Argumente wie unten übergeben, wenn alle oben genannten Funktionen dieselbe Anzahl von Argumenten desselben Typs haben.
Hinweis: Hier im Array beginnt die Nummerierung der Funktionszeiger wie in allgemeinen Arrays bei 0. Im obigen Beispiel
fun1
kann also aufgerufen werden, wenn Option = 0,fun2
kann aufgerufen werden, wenn Option = 1 undfun3
kann aufgerufen werden, wenn Option = 2.quelle
(*func_ptr[3])
zu(*func_ptr[3])()
und es wird kompiliertSo können Sie es verwenden:
New_Fun.h
New_Fun.c
Haupt c
Ich hoffe das hilft beim Verständnis
Function Pointer.
quelle
f1, f2 ...
einfach und geben Sie stattdessen 'writefile, readfromfile ...' ein. Es wird redableDiese "Antwort" ist eher ein Nachtrag zu VonCs Antwort; Ich möchte nur darauf hinweisen, dass die Syntax über ein typedef vereinfacht und eine aggregierte Initialisierung verwendet werden kann:
quelle
Oh, es gibt Unmengen von Beispielen. Schauen Sie sich einfach alles in glib oder gtk an. Sie können die Arbeit der Funktionszeiger dort in Arbeit sehen.
Hier zB die Initialisierung des gtk_button-Materials.
Und in gtkobject.h finden Sie folgende Erklärungen:
Das Zeug (* set_arg) ist ein Zeiger auf die Funktion, und dies kann z. B. einer anderen Implementierung in einer abgeleiteten Klasse zugewiesen werden.
Oft sieht man so etwas
Sie können also nach Namen in die Tabelle greifen und die "zugehörige" Funktion aufrufen.
Oder Sie verwenden eine Hash-Tabelle, in die Sie die Funktion einfügen und "nach Namen" aufrufen.
Grüße
Friedrich
quelle
Kann es so verwenden:
quelle
Dies sollte ein kurzes und einfaches Beispiel für das Kopieren und Einfügen von Code für die obigen Antworten sein. Hoffentlich hilft das.
quelle
Die einfachste Lösung besteht darin, die Adresse des gewünschten endgültigen Vektors anzugeben und diese innerhalb der Funktion zu ändern.
quelle
Diese Frage wurde bereits mit sehr guten Beispielen beantwortet. Das einzige Beispiel, das möglicherweise fehlt, ist eines, bei dem die Funktionen Zeiger zurückgeben. Ich habe ein weiteres Beispiel damit geschrieben und viele Kommentare hinzugefügt, falls jemand es hilfreich findet:
quelle
Dieses einfache Beispiel für ein mehrdimensionales Array mit Funktionszeigern ":
quelle