C: Unterschied zwischen den Versionen

Aus C3D2
Zur Navigation springen Zur Suche springen
(Cooler Code mit Funktionspointern)
 
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;
  printf("%d", a);
   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;
}