chapter3 结构体 共用体与枚举

1.struct 和class的区别: 继承  默认访问权限  

 http://www.cnblogs.com/york-hust/archive/2012/05/29/2524658.html 

2.long long a=0x12 34 56 78 87 65 43 21 -->printf("%x\n",a)--> 87 65 43 21  -->%x每次输出4个字节

3.位域:http://www.xuebuyuan.com/947747.html      想起在内存中0x80 00 00 00 -->1000 0000 0000 0000 0000 0000 0000 0000输出时候1111 1111 1111 1111 1111 1111 1111

1111 + 1  ->-2的31次方

          1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字

          段将紧邻前一个字段存储,直到不能容纳为止;
          2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字
            段将从新的存储单元开始,其偏移量为其类型大小的整数倍;
         3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方
         式,Dev-C++采取压缩方式;
        4) 如果位域字段之间穿插着非位域字段,则不进行压缩;
         5) 整个结构体的总大小为最宽基本类型成员大小的整数倍

4. 枚举的声明方式:enum 枚举类型名{枚举常量1[=整型常数] , 枚举常量2[=整型常数],...}  [变量名列表]

5.sizeof 变量 时主要看变量的类型32位中指针大小4B,64位中8B

6.strut空间计算;1).整体空间是占用空间最大的成员所占的字节数的整数倍-->结构体中只有一个char型,sizeof 大小为1,在windows下的VS,整体空间是最大成员所占字节数的整数倍(包括存在double型时则为8的倍数),但在linux+gcc环境下最多为4的倍数

                            2). 数据对齐原则,内存按结构体成员的先后顺序排列,排到该成员变量时,其前面已摆放的空间大小必须是该成员类型大小的整数倍,不够则对齐,linux+gcc下最大为4的倍数(忽略 double的情况),windows的vs则没有此限制

7.#pragma pack(n)  内存对齐的字节为n(若最大类型的字节数比n小,则取最大类型字节数对齐),空结构体为了存取,区分,分配1个字节

8.union的内存空间计算:取占用内存最多的成员的空间作为自己的空间,也要考虑内存对齐

9.枚举类型:当做int类型存储


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值