#39 Zeiger auf Funktionen Flashcards
Was kann man Allgemein zu Zeiger auf Funktionen sagen?
- Im (von-Neumann-)Rechner stehen Daten und Programmcode
im selben Speicher. - Daher kann Programmcode als Daten und umgekehrt
aufgefasst werden. - Zeiger auf Funktionen zeigen auf den Anfang des Maschinencodes
einer Funktion. - Aufruf der referenzierten Funktion über den Funktionszeiger.
Nenne die Syntax von Zeigern auf Funktionen sowie die Deklaration und was man bei der Schreibweise beachten muss.
Syntax: Datentyp (*Name)(<Parameterliste>);
- Deklariert Zeiger auf Funktion mit Parameterliste und
Rückgabewert Datentyp.
- Wichtig: Funktionsname klammern, sonst würde eine Funktion mit
Rückgabetyp Zeiger definiert.</Parameterliste>
Nenne unterschiedliche arten der Zuweisung von Funktionen und den Aufruf.
-Zuweisung mittels = und Name einer bekannten Funktion
f = quadrat;
- Direktes Aufrufen der Funktion über Zeiger und Funktionsaufrufoperator ()
y = f(1.2); oder y = (*f)(1.2);
- Vorsicht: Funktionsparameter werden bei der Übersetzung nicht geprüft
(Flexibilität und Risiko zugleich).
- Zeiger auf Funktionen können auch als Funktionsparameter
verwendet werden.
Bsp:
__________________________________________________
#include <stdio.h>
/* erzeugt eine Wertetabelle für eine (fast) beliebige Funktion */
void wertetabelle(double min, double max,
double step, double (*func)(double x))
{
double x;
printf(" x | f(x) \n");
printf("-------+----------\n");
for(x = min; x <= max; x += step)
{
printf("%6g | %6g\n", x, func(x));
}
}
double quadrat(double x)
{
return x*x;
}
double polynom(double x)
{
return x*x-3*x+2;
}
int main()
{
wertetabelle(-3, 3, 0.5, quadrat);
printf("\n");
wertetabelle(-3, 3, 0.5, polynom);
return 0;
}
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_</stdio.h>