C: Unterschied zwischen den Versionen
Aus C3D2
Sven (Diskussion | Beiträge) |
Sven (Diskussion | Beiträge) (→Funktionspointer) |
||
Zeile 3: | Zeile 3: | ||
Funktionspointer mit dem Namen a auf eine Funktion ohne Parameter: | Funktionspointer mit dem Namen a auf eine Funktion ohne Parameter: | ||
− | + | <source lang="c"> | |
+ | void (*a)(); | ||
+ | </source> | ||
Der Aufruf von a sieht dann folgendermaßen aus: | Der Aufruf von a sieht dann folgendermaßen aus: | ||
− | + | <source lang="c"> | |
− | + | a(); | |
+ | </source> | ||
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: | ||
− | < | + | <source lang="c"> |
void (*f(int a))(int, char *) { | void (*f(int a))(int, char *) { | ||
return &bar; | return &bar; | ||
} | } | ||
− | </ | + | </source> |
Funktion die einen Pointer auf die vorherige Funktion zurückliefert: | Funktion die einen Pointer auf die vorherige Funktion zurückliefert: | ||
− | < | + | <source lang="c"> |
void (*(*f_return())(int))(int, char *) { | void (*(*f_return())(int))(int, char *) { | ||
return &f; | return &f; | ||
} | } | ||
− | </ | + | </source> |
− | < | + | <source lang="c"> |
void (*(*f_return2( void (*a(int))(int, char *), void (*b(int))(int, char *) ))(int))(int, char *) { | void (*(*f_return2( void (*a(int))(int, char *), void (*b(int))(int, char *) ))(int))(int, char *) { | ||
return a ? b : &f; | return a ? b : &f; | ||
} | } | ||
− | </ | + | </source> |
Aktuelle Version vom 28. Mai 2007, 14:24 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;
}