Structures allow grouping of related data and can be used to represent records. A structure defines a template for the format of its members. Structures can contain basic data types and arrays. Structure variables can be initialized, and members accessed using dot operator. Arrays of structures can be used to represent tables of related data. Unions share the same storage location for members, allowing only one member to be active at a time. Both structures and unions can be used as function parameters.