Structures allow grouping of different data types into a single type in C. A structure defines a new custom data type that contains named members of basic data types. Structures can be used to represent records, objects, and other data aggregations. Pointers to structures allow passing structures by reference between functions. Bit vectors use single byte, word, or other integer types to efficiently represent sets of Boolean values by storing each in a single bit. Operations like AND, OR, and XOR can be used to manipulate the individual bits of bit vectors.