一、typedef 和 宏(define)的区别
typedef是定义字符类型,而宏是字符转换。
例:typedef int *pint;
#define PINT INT*
int main()
{pint a,b;
PINT c,d; //等同于int *c,d;所以后面的d=&e;为error。
a=&e;b=&e;c=&e;
d=&e; //error
二、结构体大小
原则:1.保证最大成员放在能被其大小整除的地址上。
2.总大小是单个最大成员大小的倍数。
例:
1.struct A
{char a; //1(+3)
int b; //4
}; //8
2.struct B
{char a; //1(+1)
short b; //2
int c; //4
}; //8
3.struct C
{int a; //4
char b; //1
}; //5(+3)
4.struct D
{char a; //1(+3)
int b; //4
short c; //2
}; //10(+2)
5.struct E
{int a; //4
struct EE
{int b;
char c;
}d; //8
}; //12
6.特殊用法
struct F
{char a;
char e; //这句不参与使用,但作为内存对齐占位。
short b;
int c;
};