Structures allow grouping of different data types under one name. A structure defines a template for storing multiple data items of different types together. Structure variables can then be declared based on this template to store actual data. Structure members are accessed using the dot operator. Arrays of structures can be used to store information about multiple objects of the same type. Structures can also be nested by defining a structure as a member of another structure. Structures can be passed to functions by value or by reference using pointers.