Typedefs are declarations which have the keyword typedef
in front and before the type. E.g.:
typedef int (*(*t0)())[5];
(you can technically put the typedef after the type too - like this int typedef (*(*t0)())[5];
but this is discouraged)
The above declarations declares an identifier for a typedef name. You can use it like this afterwards:
t0 pf;
Which will have the same effect as writing:
int (*(*pf)())[5];
As you can see the typedef name "saves" the declaration as a type to use later for other declarations. This way you can save some keystrokes. Also as declaration using typedef
is still a declaration you are not limited only by the above example:
t0 (*pf1);
Is the same as:
int (*(**pf1)())[5];