 = f;

    /* A pointer to function g() returned by f().  */
    void (*y)(int *a) = x(a);

    int i = 10;
    y(&amp;i);
    return 0;
}</code>
</pre>
<p>
  Here is the output of this program:
</p>
<pre>
<samp>$ gcc -Wall -Wextra -pedantic -std=c99 foo.c && ./a.out
g(): a = 0
g(): a = 1
g(): a = 2
g(): a = 3
g(): a = 4
g(): a = 5
g(): a = 6
g(): a = 7
g(): a = 8
g(): a = 9
g(): a = 10</samp>
</pre>
<h2 id="further-reading">Further Reading</h2>
<p>
  The book
  <em><a href="https://en.wikipedia.org/wiki/Th