A programmer can define new types derived from the pre-defined types, or
from types already defined in a program. These types may be unstructured
(like the basic types) or structured. Unstructured, user defined types are
known as enumerated types. Structured, user defined types are either
arrays, structures or unions.