C: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Sven (Diskussion | Beiträge) (Cooler Code mit Funktionspointern) |
Sven (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 8: | Zeile 8: | ||
Funktion mit einem int-Argument die einen Funktionspointer auf eine Funktion zurückliefert die void zurückliefert und ein int-Argument und ein char * Argument hat: | Funktion mit einem int-Argument die einen Funktionspointer auf eine Funktion zurückliefert die void zurückliefert und ein int-Argument und ein char * Argument hat: | ||
<pre> | <pre> | ||
void (*f(int a))(int, char *) | void (*f(int a))(int, char *) { | ||
{ | return &bar; | ||
return &bar; | |||
} | } | ||
</pre> | </pre> | ||
Funktion die einen Pointer auf die vorherige Funktion zurückliefert: | Funktion die einen Pointer auf die vorherige Funktion zurückliefert: | ||
<pre> | <pre> | ||
void (*(*f_return())(int))(int, char *) | void (*(*f_return())(int))(int, char *) { | ||
{ | |||
return &f; | return &f; | ||
} | } | ||
</pre> | |||
<pre> | |||
void (*(*f_return2( void (*a(int))(int, char *), void (*b(int))(int, char *) ))(int))(int, char *) { | |||
return a ? b : &f; | |||
} | |||
</pre> | </pre> |
Version vom 20. Oktober 2006, 14:55 Uhr
Funktionspointer
Funktionspointer mit dem Namen a auf eine Funktion ohne Parameter:
void (*a)();
Der Aufruf von a sieht dann folgendermaßen aus:
(*a)();
Funktion mit einem int-Argument die einen Funktionspointer auf eine Funktion zurückliefert die void zurückliefert und ein int-Argument und ein char * Argument hat:
void (*f(int a))(int, char *) { return &bar; }
Funktion die einen Pointer auf die vorherige Funktion zurückliefert:
void (*(*f_return())(int))(int, char *) { return &f; }
void (*(*f_return2( void (*a(int))(int, char *), void (*b(int))(int, char *) ))(int))(int, char *) { return a ? b : &f; }