博客
关于我
struct和union分析
阅读量:132 次
发布时间:2019-02-27

本文共 726 字,大约阅读时间需要 2 分钟。

一、struct

空结构体占多大内存???下面例子:

#include 
struct str{ };int main(){ struct str obj1; struct str obj2; printf("%d\n", sizeof(struct str)); printf("%d, %ox\n", sizeof(obj1), &obj1); printf("%d, %ox\n", sizeof(obj2), &obj2); return 0;}

结果为0,而且obj1和obj2的起始地址相同。【gcc编译器】

实际上 在C语言中并无说明空结构体占多大内存

通过实际实验得出:gcc编译器中,都为零,起始地址相同;g++编译器中,都为1 起始地址不同 但不可通过 "."来访问内存空间。

二、union与struct的区别

struct中的每个域在内存中都独立分配空间;union只分配最大域的空间,所有域共享这个空间。下面例子:

#include 
struct str_test{ int a; int b; int c;};union uni_test{ int a; int b; int c;};int main(){ printf("%d\n", sizeof(struct str_test)); printf("%d\n", sizeof(union uni_test)); return 0;}

union使用的注意事项:

union的使用受系统大小端的影响:

大端模式:

小端模式:

你可能感兴趣的文章
从零构建通讯器--4.4-4.5信号在创建线程的实战作用、write函数写入日志设置成不混乱、文件IO详解
查看>>
从零构建通讯器--5.2三次握手,telnet,wireshark
查看>>
关于信号的截断备忘录
查看>>
为什么vs中的地址值是顺序相反的?
查看>>
如何判断两个浮点数是否相等?
查看>>
什么是地址?
查看>>
POJ - 3984 迷宫问题(bfs+路径标记)
查看>>
2017ccpc杭州 E. Master of Subgraph(点分治 + 树dp + bitset)
查看>>
2021牛客寒假算法基础集训营3
查看>>
营收环比增幅近50%,星巴克在经历“劫”后重生吗?
查看>>
苹果进军搜索,背后藏着什么“阳谋”?
查看>>
ARK女神持仓每日跟踪-2021年01月05日
查看>>
egg:如何在控制器中拿到前端传的参数
查看>>
vue系列:vue中使用vee-validate3表单验证
查看>>
php:使用php写一个简单的接口
查看>>
mysql:三范式
查看>>
RPA实施指南:企业如何实现流程优化?
查看>>
干货丨RPA售前六技能
查看>>
MVC之修改
查看>>
使用pycharm链接数据库MySQL
查看>>