#include <stdio.h>

// 默认对齐的结构体
struct AlignedStruct {
    char a;      // 1 字节
    int b;       // 4 字节（对齐要求 4）
    double c;    // 8 字节（对齐要求 8）
};

// 紧凑对齐（取消填充）
#pragma pack(push, 1)
struct PackedStruct {
    char a;
    int b;
    double c;
};
#pragma pack(pop)

int main() {
    struct AlignedStruct s1;
    struct PackedStruct s2;
    printf("Addresses:\n");
    printf("s1: %p\ns1.a: %p\ns1.b: %p\ns1.c: %p\n", 
           &s1, &s1.a, &s1.b, &s1.c);
    printf("s2: %p\ns2.a: %p\ns2.b: %p\ns2.c: %p\n", 
           &s2, &s2.a, &s2.b, &s2.c);
    return 0;
}