c语言学习笔记-共用体,大小端,和枚举

  1. 共用体

    1. 共用体是c中的一种数据结构,他的定义方法和使用方法与结构体相同,只需要在定义类型时将struct换为union即可
    2. 与结构体不同的是,联合体中的内存空间是所有成员共用的,公用体的大小取决于共用体中最大的成员大小,共有体没有对齐机制,即使当联合体最大成员大小不足4字节的倍数,编译器也不会自动填充对齐
    3. 使用联合体一般只是为了方便开发者阅读,其成员类型代表了将会以何种方式解析这段内存数据,同样的使用强制类型转换也可以做到同样的效果
  2. 大小端

    1. 大小端指的是芯片在存储数据中采用的格式
      大段对应高地址存放低字节
      小端对应高地址存放高字节
      51内核架构的芯片采用的就是大端模式
      ARM芯片采用的就是小端模式
      通过使用共用体和指针可以测试出当前机器使用的是大端还是小端
    2. 测试代码的实现
union u1{
	int  a ;
	char b;
};
//共用体的方式本质还是通过指针实现检测
//由于在int类型强制转换为char型时,会将高字节数据全部截掉,所以可以检查低地址中存放的是不是1
//如果发现被截取掉了,则是大端,低字节存放在高地址中,反之则是小端
union u1 uni1;
uni1.a = 1;
printf("%d\n",uni1.b);
//指针方式
   int a = 1;
    ptr = &a;
    printf("%d\n",*ptr);
  1. 枚举
    1. 枚举也是一种数据结构,其作用与宏定义相似,都是为了减少阅读障碍,提高程序的可读性
    2. 枚举实际上就是定义了一堆类型为unsigned int的全局变量,成员的大小默认从0开始,依次增加,如果只修改某一个成员的值,那么后面的成员则会以定义值为基数增加
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值