#include
struct elem
{
int num; /* Номер вершины */
int suns; /* Количество сыновей */
char str[20]; /* Строка с номерами сыновей */
elem *next; /* Указатель на следующую вершину */
} *head;
int main()
{
printf("sizeof(int) = %d\n", sizeof(int));
printf("sizeof(char str[20]) = %d\n", sizeof(head->str));
printf("sizeof(elem *next) = %d\n", sizeof(head->next));
printf("sizeof(elem) = %d\n", sizeof(elem));
}
Размеры по отдельности: int - 4b;
char str[20] - 20b;
elem *next - 8b.
Итого по отдельности 36 байт. Но общий размер структуры выдает 40 байт. Причем если закомментировать указатель "elem *next", то общий размер структуры будет соответствовать сумме размеров "int" и "char str[20]" по отдельности, т.е. 28 байт.
Собственно вопрос, откуда берутся еще 4 байта при добавлении указателя? Т.е. вместо 8 байт прибавляется 12 байт.