C和指针之联合体大小
来源:互联网 发布:金山数据恢复大师下载 编辑:程序博客网 时间:2024/06/06 02:08
1、联合体的特点和大小
union是共用一个内存首地址,联合体中每个成员的地址都相同,等于联合体变量的首地址
联合体的大小足够容纳最宽的成员,大小能被其包含的所有基本数据类型的大小所整除
2、测试Demo
#include <stdio.h>union var {long int a;int b;};union size{int a;double b;char c[11];};int main(){union var v;v.a = 3.14;printf("v.b is %d\n", v.b);v.b = 6;printf("v.a is %ld the address is %p\n", v.a, &v.a);printf("v.b is %d the address is %p\n", v.b, &v.b);union size union_first;union size union_second;union size union_third;//大小足够容纳最宽的成员,大小能被其包含的所有基本数据类型的大小所整除printf("the sizeof union_first is %d\n", sizeof(union_first));printf("the sizeof union_second is %d\n", sizeof(union_second));printf("the sizeof union_third is %d\n", sizeof(union_third));printf("sizeof(long int) is %d\n", sizeof(long int));printf("the sizeof var is %d\n", sizeof(union var));//联合体中每个成员的地址都相同,等于联合体变量的首地址printf("the union_first address is 0x%x\n", &union_first);printf("the union_first.a address is 0x%x\n", &union_first.a);printf("the union_first.b address is 0x%x\n", &union_first.b);printf("the union_first.c address is 0x%x\n", union_first.c);union_first.a = 1;printf("the union_first.b is %d\n", union_first.b);printf("the union_second.c[0] is %d\n", union_first.c[0]);return 0;}
3、运行结果
v.b is 5v.c is 1v.a is 6 the address is 0x7ffe26877060v.b is 6 the address is 0x7ffe26877060the sizeof union_first is 16the sizeof union_second is 16the sizeof union_third is 16sizeof(long int) is 8the sizeof var is 8the union_first address is 0x26877070the union_first.a address is 0x26877070the union_first.b address is 0x26877070the union_first.c address is 0x26877070the union_first.b is 1the union_second.c[0] is 1
阅读全文
0 0
- C和指针之联合体大小
- 9.C语言之结构体和联合体
- C++基础之---union联合体大小分析
- C语言之联合体union
- C/C++中的联合体union及CPU大小端判定
- C/C++中的联合体union及CPU大小端判定
- c语言的联合体以及大小端 (备忘)
- C/C++中的联合体union及CPU大小端判定
- C语言——用联合体判断大小端
- C语言——用联合体判断大小端
- C语言——用联合体判断大小端
- C语言——用联合体判断大小端
- C语言开发之联合体用法
- C语言知识点学习之联合体
- C/C++之联合体,枚举,自定义类型
- C语言之共用体(联合体)
- ⑦NDK学习之C语言联合体
- C语言基础-结构体和联合体
- Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
- PHP学习笔记:使用session来存储用户的登录信息
- Java 内部类
- javascript设计模式
- 导入别人的android studio项目
- C和指针之联合体大小
- LAMP的部署————mariadb (mysql)的管理
- fread函数详解
- Spring Boot对Redis的整合
- Day7之面向对象笔记
- codeforces 143B Help Kingdom of Far Far Away 2(模拟)
- IO流/属性类/序列化
- win10宿主机下VM虚拟机Ubuntu不能联网问题解决
- 《数据结构算法与应用》编写一个函数changeLength2D,用以改变一个二维数组的长度。二维数组的每一维的长度都是可以变化的