Reputation: 63310
I came across this line:
void (*(*x)(void (*[10])(int *)))(int *)
Can anybody tell me what it is?
Upvotes: 25
Views: 1548
Reputation: 52405
To break this down yourself, start from the inner most parentheses and work your way out.
(*[10])
<---- Array of 10 pointers(*[10])(int *)
<------ Array of 10 pointers to functions which has a pointer to int
as its argument(void (*[10])(int *))
<------ Array of 10 pointers to functions which has a pointer to int
as its argument and returns void
(*x)(void (*[10])(int *))
<------- x
is a pointer to a function which has as an argument (an array of 10 pointers to functions which has a pointer to int as its argument and returns void
).....
I stopped partway through, but hopefully that helps.
Upvotes: 43
Reputation: 62106
You can find explanations here:
Upvotes: 5
Reputation: 75150
cdecl is very helpful for this kind of thing. It says:
declare x as pointer to function (array 10 of pointer to function (pointer to int) returning void) returning pointer to function (pointer to int) returning void
Upvotes: 10
Reputation:
A pointer to a function which has an array of 10 pointers to functions that has int * argument and return type void as argument, and returns a pointer to a function which has int * argument and return type void.
Upvotes: 3