У меня есть структура, и я написал следующий код для печати размера структуры. Я получаю «8» как размер структуры, хотя ожидал «6». sizeof (int) + sizeof (char) + sizeof (char) = 4 + 1 + 1 = 6. И если я прокомментирую внутреннюю часть структуры, я получу желаемый результат (т. е. размер структуры как 2)Расчет структуры размера
I также распечатал размер int, который наступает 4.
typedef struct example
{
int one;
char two;
char three;
}example;
int main()
{
printf("value %d %d ",sizeof(example),sizeof(int));
}
Это связано с выравниванием, ваша структура находится в 4-байтовом порядке. http://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member – birryree
Таким образом, вы можете смело поместить структуру в массив и элемент 'int' будут правильно выровнены. – Bill