乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
C 0.7 联合
2018-06-17 08:23:04
52
0
0
admin
> union, 申请一些内存,支持事先定义好的变量类型,只能放一个变量。一般只有写很底层的东西的时候需要。或者在内存极度缺乏的时候。 * 联合占用的内存大小与其定义的最大的变量相等,所以联合可以支持定义好的所有的变量类型。 * 一个联合里只能放一个变量。被赋值新的变量以后,旧的变量就被覆盖了。 简单例子: ``` #include <stdio.h> union union_name { int a; char b; double c; } u1; main() { union union_name *u2; u2 = &u1; printf("size=%d\n",sizeof(u1));//大小是最大的变量的大小 int tmp_int = 65; u1.a = tmp_int; printf("int=%d,char=%c\n",u1.a,u1.b); char tmp_char = 'B'; u2->b = tmp_char; //指针可以用箭头 printf("int=%d,char=%c\n",u2->a,u2->b); } ``` 运行结果: ``` size=8 int=65,char=A int=66,char=B ``` *** 另一个例子,一些底层的功能: ``` #include <stdio.h> union u_name { int a; char bytes[4]; } the_int; main() { the_int.bytes[0] = 0x01; the_int.bytes[1] = 0x00; the_int.bytes[2] = 0x00; the_int.bytes[3] = 0x00; printf("%d\n",the_int.a); //最后结果是1,说明bytes是按照byte4,byte3,byte2,byte1来排列的,说明这台机器是小端法 } ```
上一篇:
C 0.6 类型定义
下一篇:
C 0.8 字段
文档导航