Chinaunix首页 | 论坛 | 博客
  • 博客访问: 42839
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-28 17:39
文章分类
文章存档

2015年(31)

我的朋友

分类: C/C++

2015-10-28 08:52:20

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) |
0

上一篇:automake

下一篇:队列使用--树的层次遍历

给主人留下些什么吧!~~