declare foo as const pointer to int | int * const foo
declare foo as pointer to const int | const int *foo
declare foo as pointer to function returning const int | const int (* foo)()
declare foo as pointer to array 5 of int | int (* foo)[5]
declare foo as pointer to function returning const pointer to int | int * const (* foo)()
declare f as pointer to array 5 of pointer to array 10 of array 50 of unsigned const int | unsigned const int (* (* f)[5])[10][50]
declare foo as array of int | int foo[]
declare foo as array 5 of int | int foo[5]
declare foo as array 5 of pointer to const int | const int * foo[5]
declare foo as array 5 of pointer to int | int * foo[5]
declare array 5 of array 10 of pointer to array 20 of int | int (* var[5][10])[20]
declare f as pointer to function (a,b,c as int, int, pointer to const char, pointer to array 5 of pointer to function(a,b,int) returning pointer to int) returning int | int (* f)(a, b, int c, int, const char *, int * (* (* )[5])(a, b, int))
declare f as static int | static int f
explain int* f(int*) | declare f as function (pointer to int) returning pointer to int
explain int f(a,b,c) | declare f as function (a, b, c) returning int
explain int *(f)[] | declare f as array of pointer to int
explain const int *const f | declare f as const pointer to const int
explain volatile int *const f | declare f as const pointer to volatile int
explain static volatile const f | declare f as static volatile const int
explain static volatile const* f | declare f as static pointer to volatile const int
declare f as array 12 of pointer to pointer to array 15 of pointer to union foo | union foo * (* * f[12])[15]
explain int**f[]()[] | declare f as array of function returning array of pointer to pointer to int
explain int*volatile const*noalias*f | declare f as pointer to restrict pointer to volatile const pointer to int
explain static const *volatile f | declare f as static volatile pointer to const int
explain static const *volatile*const*noalias f | declare f as static restrict pointer to const pointer to volatile pointer to const int
explain const * volatile f | declare f as volatile pointer to const int
explain const * volatile* f | declare f as pointer to volatile pointer to const int
explain static const * volatile* f[] | declare f as static array of pointer to volatile pointer to const int
explain (int((())(a,b,c))[4])f | cast f into function returning function (a, b, c) returning array 4 of int
explain(int(*())())f | cast f into function returning pointer to function returning int
explain(int(***())())f | cast f into function returning pointer to pointer to pointer to function returning int
explain (int *(*)())f | cast f into pointer to function returning pointer to int
explain (int** (*(*)(a,b))())f | cast f into pointer to function (a, b) returning pointer to function returning pointer to pointer to int
explain static const int foo | declare foo as static const int
explain static const foo | declare foo as static const int
explain int(*f)() | declare f as pointer to function returning int
explain int(*f)()() | declare f as pointer to function returning function returning int
explain int(*f)()()() | declare f as pointer to function returning function returning function returning int
declare x as ptr to character | char *x
declare x as func(w as ptr to char, y as int) ret ptr to int | int * x(char * w, int y)
declare x as func(ptr to char) ret ptr to int | int * x(char *)
declare x as func(int) ret ptr to int | int * x(int)
declare x as func(ptr to char, int) ret ptr to int | int * x(char *, int)
declare x as function (args) returning pointer to int | int * x(args)
explain char *x | declare x as pointer to char
explain int *x() | declare x as function returning pointer to int
explain int *x(args) | declare x as function (args) returning pointer to int
explain int *x(char *) | declare x as function (pointer to char) returning pointer to int
explain int *x(char *, int ) | declare x as function (pointer to char, int) returning pointer to int
explain int *x(char *, int, float) | declare x as function (pointer to char, int, float) returning pointer to int
explain int *x(int ) | declare x as function (int) returning pointer to int
cast x into ptr to char | (char *)x
cast x into ptr to func ret int | (int (*)())x
cast x into ptr to func() ret int | (int (*)())x
cast x into ptr to func(args) ret int | (int (*)(args))x
cast x into ptr to func(x as ptr to char, y as int) ret int | (int (*)(char * x, int y))x
cast x into ptr to func(ptr to char) ret int | (int (*)(char *))x
cast x into ptr to func(ptr to char, int) ret int | (int (*)(char *, int))x
cast x into ptr to func(ptr to char, int, float) ret int | (int (*)(char *, int , float))x
explain (char *)x | cast x into pointer to char
explain (int (*)())x | cast x into pointer to function returning int
explain (int (*)(char *))x | cast x into pointer to function (pointer to char) returning int
explain (int (*)(char *, int))x | cast x into pointer to function (pointer to char, int) returning int
explain (int (*)(char *, int, float))x | cast x into pointer to function (pointer to char, int, float) returning int
explain (const int *)f | cast f into pointer to const int
