jak rozmiar struktury zmienia się w zależności od różnych typów danych

Korzystam z 32-bitowego systemu Linux i kompilatora GCC.

Próbowałem z trzema różnymi typami konstrukcji. w pierwszej strukturze zdefiniowałem tylko jednąchar zmienna. rozmiar tej struktury wynosi 1, co jest poprawne.

w drugiej strukturze zdefiniowałem tylko jednąint zmienna. tutaj rozmiar struktury pokazuje 4, co również jest poprawne.

ale w trzeciej strukturze, gdy ją zdefiniowałemchar i jedenint oznacza to, że całkowity rozmiar powinien wynosić 5, ale wynik jest wyświetlany 8. Czy ktoś może wyjaśnić, jak przypisana jest struktura?

typedef struct struct_size_tag
{
    char c;
    //int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}
Wyjście: Rozmiar struktury: 1
typedef struct struct_size_tag
{
    //char c;
    int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}
Wyjście: Rozmiar struktury: 4
typedef struct struct_size_tag
{
    char c;
    int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}

Wydajność:

Rozmiar struktury: 8

questionAnswers(4)

yourAnswerToTheQuestion