博客
关于我
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的使用受系统大小端的影响:

大端模式:

小端模式:

你可能感兴趣的文章
【转载】常见HTTP状态码
查看>>
一只蒟蒻的计算机网络学习【一】
查看>>
win10连接上wifi显示无internet,并且wlan的属性都点不了,可尝试的解决方法(亲测有用!!!)
查看>>
【一只蒟蒻的刷题历程】 【HDU-1276】 士兵队列训练问题
查看>>
【 UVA - 572 】 Oil Deposits (DFS水题)
查看>>
【 UVA - 673 】Parentheses Balance 平衡的括号 (非常容易理解!!)
查看>>
【Linux】 Linux实操 --- 开机、重启和用户登录注销
查看>>
RBF神经网络——案例一
查看>>
神经元的传递函数
查看>>
继承和派生1
查看>>
七月十一日训练总结
查看>>
约瑟夫环问题
查看>>
CF #716 (Div. 2) B. AND 0, Sum Big(思维+数学)
查看>>
数据结构与算法实验1——线性表的应用之顺序表
查看>>
阿里云数据库连接MySql
查看>>
SQLyog(MySQL图形化开发工具)
查看>>
MySQL报错记录一下10061或者非自己的IP
查看>>
純前端 - 各種實現進度條
查看>>
Java 設計模式 - 建造者模式
查看>>
ES6 JavaScript 重新認識 Promise
查看>>