C structures allow grouping of related data items under one name. Structures are scalars that can be passed as function arguments or assigned to variables. Unions share the same memory region for all members, so only one member can be accessed at a time. Both structures and unions allow organizing related data and passing groups of data together.