#39 Zeiger auf Funktionen Flashcards

1
Q

Was kann man Allgemein zu Zeiger auf Funktionen sagen?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Nenne die Syntax von Zeigern auf Funktionen sowie die Deklaration und was man bei der Schreibweise beachten muss.

A

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>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Nenne unterschiedliche arten der Zuweisung von Funktionen und den Aufruf.

A

-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>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly