IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言 | struct(结构体) 和 union(联合体)有什么区别 -> 正文阅读

[C++知识库]C语言 | struct(结构体) 和 union(联合体)有什么区别

区别

1.struct 的成员存放在不同地址上,union 所有成员存放在同一个地址空间。

2.struct 的长度是所有成员所占空间之和,union 的长度是其占用空间最大的成员的长度。

引出的几个问题

问题1:union 和 struct 的长度怎么算?
例如,下面应该输出多少?

struct Stu
{
	char sex;
	int age;
};
printf("sizeof(struct Stu) = %d\n", sizeof(struct Stu));

答案是8。这就涉及到了字节对齐的问题。

问题2:改变 union 的一个成员,是否会影响其他成员的值?

union U_A{
	char a;
	int b;
}u_c;
u_c.a = 0x01;
u_c.b = 0x0201;
printf("%d %d \n", u_c.b, u_c.a);

程序输出513 1 。可以看出,好像并没有影响(当然,这只是特例)。这就涉及到了C语言的基本类型在内存中究竟是怎么储存的问题。

问题3:什么,你的问题2中的程序运行结果和我的不一样?
这就涉及到了大小端的问题。

问题4:区别1中提到了地址空间,什么是地址空间?
这就涉及到了物理空间以及虚拟空间的问题。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 14:26:18  更:2021-10-02 14:29:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:31:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码