1.结构体
每个成员变量都单独占一块内存,各成员在内存中的分布存在"内存对齐",64位机器按8个字节对齐
#include<stdio.h>
int main()
{
struct _s{
char a; //1字节
int b; //4字节
long c; //8字节
void* d; //8字节
int e; //4字节
char* f; //8字节
}s;
s.a = 'a';
s.b = 1;
s.c = 2;
s.d = NULL;
s.e = 3;
s.f = &s.a;
printf("size of struct s is %d\n",sizeof(s));
return 1;
}
// size of struct s is 40
2. 联合体 union
所有的成员变量共用一块内存,"内存复用",一般8字节复用
#include<stdio.h>
int main()
{
union _u{
char a; //1字节
int b; //4字节
long c; //8字节
void* d; //8字节
int e; //4字节
char* f; //8字节
}u;
u.a = 'a';
u.b = 1;
u.c = 2;
u.d = NULL;
u.e = 3;
u.f = &s.a;
printf("size of struct u is %d\n",sizeof(u));
return 1;
}
// size of struct s is 8