C: Unterschied zwischen den Versionen

Aus C3D2
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
Zeile 3: Zeile 3:


Funktionspointer mit dem Namen a auf eine Funktion ohne Parameter:
Funktionspointer mit dem Namen a auf eine Funktion ohne Parameter:
void (*a)();
<source lang="c">
void (*a)();
</source>
Der Aufruf von a sieht dann folgendermaßen aus:
Der Aufruf von a sieht dann folgendermaßen aus:
a();
<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:
<pre>
<source lang="c">
void (*f(int a))(int, char *) {
void (*f(int a))(int, char *) {
   return &bar;
   return &bar;
}  
}  
</pre>
</source>
Funktion die einen Pointer auf die vorherige Funktion zurückliefert:
Funktion die einen Pointer auf die vorherige Funktion zurückliefert:
<pre>
<source lang="c">
void (*(*f_return())(int))(int, char *) {  
void (*(*f_return())(int))(int, char *) {  
   return &f;
   return &f;
}  
}  
</pre>
</source>
<pre>
<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;
}
}
</pre>
</source>

Aktuelle Version vom 28. Mai 2007, 13: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;
}