Structures allow grouping of related data types together under one name. A structure defines members of different data types. Structure variables can be declared to access members using dot operator. Arrays of structures can be defined to represent multiple records. Structures can be nested by defining a structure as a member of another structure. Unions are similar to structures but share same memory space for members rather than each occupying own space like in structures.