1、struct
{
成员列表;
}lucy,lily ,bo;
只能定义}后边这三个变量,有局限性。
2、具有相同类型的结构变量的结构体可以直接进行赋值预算。
ep:lucy=lily;
3、在共用体中,其内存空间就是最后一次操作所得的值。共用体的内存跟最大的那个元素大小有关;
4、枚举:
定义形式:enum bool{false,true};
定义变量:enum bool test;test就被定义为枚举类型了。
5、typedef:
typedef 原数据类型 新类型名;
6、以占最大空间的字符型为开辟最小空间(每次都开辟比较大 的那个字符的空间),偏移量要整除于要分配的变量的空间,
ep:ep: struct a{
char a;
short b;
short c;
int d;
double f;
}num; 其中num占用24字节
其中以double为分配空间,所以每次分出来8个字节,a占用1字节,b占2字节,但是b要从偏移量为2的地址开始存放b,c要存放在偏移量为4的地方开始存放,
d往后边存,但是要以偏移量为4 的倍数的地址开始存放,f 要独自占用8字节。
typedef struct packed_data
{
int num;
char name[20];
char i;
int a;
char na[10];
} data;中num占用4字节,name[20]占用20资字节,i独自占用4个字节,因为这次是重新分配4个字节的空间,而int a占4个字节,没法放到这块新开辟的空间中,所以这个i要独自占用4
个字节。而a占用4个字节,na占用10个字节的空间。
7、packed-data
{
unsigned a:2;
unsigned b:6;
unsigned c:4;
unsigned d:4;
int I;
} data;
其中a占2位,b占6位,c占4位,d占4位,I是一个整型,占4个字节。
8、左移右移a>>=1;a<<=1;
9、用 typedef简化一个定义名,
syoedef struct student{
char num;
char name[20];
}STU;
此时STU就代表了struct student来对变量定义类型。