- struct 结构体 (地址递增)
eg:struct myabc{
unsigned int a;
unsigned int b;
unsigned int c;
unsigned int d;
};
注: int i;
struct myabc buf; //struct myabc等同于int
字节对齐:
结构体大小是4的倍数,顺序不同会影响其大小。
eg:struct abc{
char a;
short e;
int b;
}; //sizeof(abc) = 8
struct my{
char a;
int b;
short e;
}; //sizeof(my) = 12
- union 联合体(共用起始地址)
- enum 枚举 (整型常数的集合)
eg1:#define MOD 0
#define TUE 1
#define WED 2
eg2:enum abc{MOD ,TUE,WED} ; //默认从0开始,即MON = 0,TUE = 1,,,,,可以给首元素赋初值,默认递增(+1)。
上述两例等同。
eg3:enum abc{MON ,TUE,WED} ;
enum abc a1 = MOD;
printf("%lu\n",sizeof(a1)); //输出结果为4,取一个值(32bit)。
- typedef (别名)
eg: int a =170;
len_t a =170;
eg: int a; //a是一个int型的变量,
typedef int len_t; //a是一个int型的外号。
此时 len_t 170; 表示170为int型。