Structures allow grouping of related data types under a single name. They are defined using the struct keyword followed by the structure tag name and a block of member declarations. Structure variables can be declared and accessed using the dot (.) operator. Structures allow organizing related data and passing compound data as a single unit. Unions store only one data member at a time, allowing a single variable to be treated as different data types.