\begin{slide}{Unterprogramme als Resultate}


\begin{verbatim}
int x1 = 3;

int (*s (int foo)) (int x2) {
  int f (int y) { return x1 + y; }
  return &f;
}

int main (int argc, char ** argv) {
  int (*p) (int) = s(4);
  printf ("%d\n", (*p)(3));
}
\end{verbatim}


In \verb|f| ersetze \verb|x1| durch \verb|x2|.

Assemblercode erklären.
\end{slide}
