これ以上はもういや(w。誰か続きやって。

int (*(*array(int i))[2])(int);

int func(int i)
{
return i;
}

int (*(*array(int i))[2])(int)
{
static int (*ptr[2])(int) = {func, func};

printf("parameter = %d\n", i);
return &ptr;
}

int main(void)
{
printf("array() = %d, %d\n", (*(*array(0))[0])(123), (*(*array(1))[1])(456));
return 0;
}