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, or other data records. Pointers to structures allow passing structures by reference between functions. Bit vectors use single bytes or words to efficiently represent multiple Boolean values by using each bit. Common bitwise operations allow setting, clearing, and testing bits in bit vectors.