0Pricing
C Academy · Lektion

Funktionszeiger deklarieren

Zeiger auf Funktionen

Funktionszeiger deklarieren ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.

Funktionen haben Adressen

Wie Daten befindet sich jede Funktion an einer Adresse im Speicher. Ein Funktionszeiger speichert diese Adresse, sodass Sie die Funktion indirekt aufrufen können.

#include <stdio.h>

void greet(void) { printf("hello\n"); }

int main(void) {
    void (*fp)(void) = greet;
    fp();
    return 0;
}

Die Deklaration lesen

Die Deklaration int (*fp)(int) bedeutet: fp ist ein Zeiger auf eine Funktion, die ein int entgegennimmt und ein int zurückgibt.

Die Klammern um *fp sind erforderlich.

#include <stdio.h>

int square(int x) { return x * x; }

int main(void) {
    int (*fp)(int) = square;
    printf("%d\n", fp(5));
    return 0;
}

Eine Funktion zuweisen

Ein Funktionsname wird automatisch in seine Adresse umgewandelt. Daher sind fp = square und fp = &square gleichwertig.

#include <stdio.h>

int dbl(int x) { return x * 2; }

int main(void) {
    int (*fp)(int);
    fp = &dbl;
    printf("%d\n", fp(7));
    return 0;
}

Aufruf über den Zeiger

Sie können einen Funktionszeiger mit fp(args) oder explizit mit (*fp)(args) aufrufen. Beide Varianten bewirken dasselbe.

#include <stdio.h>

int add1(int x) { return x + 1; }

int main(void) {
    int (*fp)(int) = add1;
    printf("%d\n", fp(10));
    printf("%d\n", (*fp)(10));
    return 0;
}

Die Signatur muss übereinstimmen

Der Typ eines Funktionszeigers umfasst den Rückgabetyp und die Parametertypen. Sie können ihm nur eine Funktion zuweisen, deren Signatur exakt übereinstimmt.

#include <stdio.h>

double half(double x) { return x / 2.0; }

int main(void) {
    double (*fp)(double) = half;
    printf("%f\n", fp(9.0));
    return 0;
}

Zur Laufzeit neu zuweisen

Ein Funktionszeiger ist eine Variable. Daher können Sie ihn während der Programmausführung auf verschiedene Funktionen zeigen lassen.

#include <stdio.h>

int inc(int x) { return x + 1; }
int dec(int x) { return x - 1; }

int main(void) {
    int (*op)(int) = inc;
    printf("%d\n", op(5));
    op = dec;
    printf("%d\n", op(5));
    return 0;
}

Auswahl anhand einer Bedingung

Wählen Sie anhand eines Werts zur Laufzeit die aufzurufende Funktion aus und rufen Sie sie anschließend über einen einzigen Zeiger auf.

#include <stdio.h>

int plus(int a) { return a + 10; }
int minus(int a) { return a - 10; }

int main(void) {
    int up = 1;
    int (*op)(int) = up ? plus : minus;
    printf("%d\n", op(100));
    return 0;
}

typedef für bessere Lesbarkeit

Die Syntax für Funktionszeiger ist ausführlich. Mit einem typedef geben Sie dem Typ einen Namen und machen Deklarationen übersichtlicher.

#include <stdio.h>

typedef int (*IntOp)(int);

int triple(int x) { return x * 3; }

int main(void) {
    IntOp op = triple;
    printf("%d\n", op(4));
    return 0;
}

Funktionen mit zwei Argumenten

Funktionszeiger können jede Signatur beschreiben. Hier ist ein Beispiel für eine binäre Ganzzahloperation.

#include <stdio.h>

int sum(int a, int b) { return a + b; }

int main(void) {
    int (*op)(int, int) = sum;
    printf("%d\n", op(3, 4));
    return 0;
}

Ein NULL-Funktionszeiger

Wie Datenzeiger kann auch ein Funktionszeiger NULL sein. Prüfen Sie immer, ob ein möglicherweise nicht gesetzter Zeiger gültig ist, bevor Sie ihn aufrufen.

#include <stdio.h>

int twice(int x) { return x * 2; }

int main(void) {
    int (*op)(int) = NULL;
    if (op == NULL) op = twice;
    if (op) printf("%d\n", op(8));
    return 0;
}

Die Adresse ausgeben

Sie können die gespeicherte Adresse untersuchen. Verschiedene Funktionen haben unterschiedliche Adressen.

#include <stdio.h>

int f(int x) { return x; }

int main(void) {
    int (*fp)(int) = f;
    printf("function pointer is %s\n", fp ? "set" : "null");
    return 0;
}

Kurzer Test

Testen Sie Ihr Verständnis von Deklarationen für Funktionszeiger.

Zusammenfassung

Sie haben gelernt, Funktionszeiger zu deklarieren und zu verwenden:

  • Syntax: ret (*name)(params) mit erforderlichen Klammern.
  • Weisen Sie den Zeiger über den Funktionsnamen zu, der automatisch in eine Adresse umgewandelt wird.
  • Rufen Sie ihn mit fp(args) oder (*fp)(args) auf.
  • Die Signatur muss übereinstimmen; typedef verbessert die Lesbarkeit.

Häufig gestellte Fragen

Ist die Lektion „Funktionszeiger deklarieren“ kostenlos?

Ja — der vollständige Text von „Funktionszeiger deklarieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Funktionszeiger deklarieren“?

Zeiger auf Funktionen Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C Academy zu starten?

Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Funktionszeiger deklarieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?

Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Funktionszeiger deklarieren
  2. Funktionen übergeben
  3. qsort mit Vergleichsfunktionen
  4. Tabellen mit Funktionszeigern
← Zurück zu C Academy