Typedef is very useful for portable names, tag names (typedef struct foo Foo;) and
keeping complicated (function) declarations readable (typedef int
(*cmpfunc
A typedef does not create a truely new type as say a class in C++, it merely creates a type alias - a single identifier for something else that already exists. In a typedef, you define no new behaviour, semantics, conversions or opeators.