Structures allow grouping of heterogeneous data types into a single unit called a structure. Structures can contain integer, float, double, character data and arrays. Structures are accessed using the dot operator. Unions share the same memory location for different data types and can hold data of only one member at a time. Enumerated data types define user-defined data types using the enum keyword where symbolic constants take on integer values starting from zero.