record, data type – a named set of values that occupy a block of memory.
A struct occupies a contiguous block of memory, usually delimited (sized) by word-length boundaries.
Being a block of contiguous memory, each field within a struct is located at a certain fixed offset from the start.
The sizeof operator results in the number of bytes needed to store a particular struct, just as it does for a primitive data type.
The alignment of particular fields in the struct (with respect to word boundaries) is implementation-specific and may include padding.
Modern compilers typically support the #pragma pack directive, which sets the size in bytes for alignment.