turn type.  */
void g(int *a)
{
    printf("g(): a = %d\n", *a);
}

/* A function which has an array of 10 pointers to g()-like functions
   and returns a pointer to a g()-like funciton.  */
void (*f(void (*a[10])(int *)))(int *)
{
    int i;
    for (i = 0; i &lt; 10; i++)
        a[i](&amp;i);
    return g;
}

int main()
{
    /* An array of 10 pointers to g().  */
    void (*a[10])(int *) = {g, g, g, g, g, g, g, g, g, g};

    /* A pointer to function f().  */
    void (*(*x)(void (*[10])(int *)))(int *)