博客
关于我
struct和union分析
阅读量:134 次
发布时间: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的使用受系统大小端的影响:

大端模式:

小端模式:

你可能感兴趣的文章
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
netron工具简单使用
查看>>
NetScaler MPX Gateway Configuration
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
netstat kill
查看>>
netstat命令用法详解
查看>>
Netstat端口占用情况
查看>>
Netty 4的内存管理:sun.misc.Unsafe
查看>>
Netty channelRegistered\ChannelActive---源码分析
查看>>
Netty NIO transport && OIO transport
查看>>
netty php,netty
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Vue过渡 & 动画---vue工作笔记0014
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty 的 Handler 链调用机制
查看>>
Netty 编解码器和 Handler 调用机制
查看>>
Netty 编解码器详解
查看>>