If i define a char variable
char a;
and a structure with a single char member
struct OneChar {
char a;
};
<
The case you list will be packed as a 1-byte structure under all ABIs I am aware of.
But if you need to portably handle more complicated cases, best practice is to always use sizeof(struct OneChar) when computing memory sizes, and taking the offset of the field address when you need to compute addresses via a trick like:
(char*)&(((struct OneChar*)0)->a) - (char*)0