C programming language allows data to be divided into different types including simple, structured, and user-defined types. Structures are a user-defined type that groups related data of different types under a single name. A structure is defined by specifying the data types and names of its members. Structure variables can be declared, initialized, and their members accessed using the dot operator. Arrays of structures and structures within structures can also be defined. Structures can be passed to and returned from functions.