A structure is a collection of variables of different data types grouped under a single name. A structure is declared using the struct keyword followed by the structure tag name within curly braces. Variables within a structure are called members and can be accessed using the dot operator. Structures allow grouping of related data and can be used to represent complex data. Arrays of structures can also be defined to store multiple structures. Pointers to structures allow accessing members of a structure using pointer notation. User defined data types like enum and typedef allow defining custom data types in C.