C++ structs allow grouping of related data elements of different types. Structs define a new data type with members that can be accessed by name. Struct variables can be declared once the struct is defined. Members are accessed using the dot operator, such as struct_variable.member. While structs allow aggregation through assignment and passing by value/reference, they do not support arithmetic, comparisons, or I/O as aggregates. Arrays of structs are also possible, with elements accessed using both the array index and dot operator.