1.可变的数据结构
typedef struct tagAr
{
int i;
int b;
int a[0];
}* pa;
在动态申请内存时根据需要声请相应的大小,使用结构体的成员a访问后面的空间,注意不要越过自己申请空间的范围。
2.位域
struct tagChar
{
char a:4; //
char b:4;
char :0; //不占空间,未分配的位数量为0
char d:4;
char e:5; //上一个char的剩余4个位不够,在下一个字节低位开始分配5个位
char f:1; //压缩,
//
int g:2; //不压缩,类型不同,从下一个字(是字不是字节)开始分配2个位
char h:1;
char :0; //上一个char的剩余部分
//结构体按最长的数据类型int的整数倍,
};
注意大小端的影响,占位应该在变量类型范围内且不跨到相邻的类型变量上,在内存的分布
3.将数据做成一个结构体,比如坐标的两个点,方便使用。通常在一个文件中使用到的变量也可以做成一个结构体。
4.链表:增加本类的结构体指针成员,使其指向同类的结构体数据,形成一个链
5.成员偏移 (unsigned int)&(((struct tagStruct *)0)->c);
6.结构体占用空间:原则是结构体变量本身存放的起始地址对齐,成员起始地址偏移按类型对齐,占用空间为最长数据类型的整数倍
阅读(749) | 评论(0) | 转发(0) |