C: Unterschied zwischen den Versionen

Aus C3D2
Wechseln zu: Navigation, Suche
(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:
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, 15: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;
}