2 leesagacious leesagacious 于 2015.06.15 21:28 提问

这个结构体占据多少字节呢 请指教

typedef struct _person{

char  firstname;

char  lastname;

char * title;

unsigned int age;

char sex;

struct spring ls;

}Person;
这个结构体占据多少字节

8个回答

jianjian1992
jianjian1992   2015.06.16 15:14
已采纳

不是简单相加就好了的,要考虑对齐问题,所以与spring结构关系很大,
我用你的这个结构做了一点小实验,结果会根据spring中内置变量的不同而有挺大变化的哦
http://blog.csdn.net/jianjian1992/article/details/46518027

leesagacious
leesagacious 大神,亲力亲为 ,五体投地感动!!膜拜
接近 3 年之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.06.15 21:46

char是一个,指针是四个。然后就是要看ispring的大小已经对齐。

hyan23
hyan23   2015.06.15 21:56

12 + ls 个人见解

zhengkaicsdn
zhengkaicsdn   2015.06.15 22:40

(1+1按4字节对齐)4+4+4+(1按4字节对齐)4 = 16+ls的大小

uxiaolang
uxiaolang   2015.06.15 23:06

按照内存地址对齐选择,是4的整数倍,前两个char构成4字节,指针char是地址,4字节,int型4字节,char补齐4字节,spring同样计算方法,所以就是4+4+4+4+spring

cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.06.15 23:18

结构体应该是总数相加(char是一个,指针是四个)所以应该是12+spring

dominating413421391
dominating413421391   2015.06.17 13:39

和结构体ls的大小有关,需要根据字对齐原则判断

a1193561652
a1193561652   Rxr 2015.06.15 21:41

spring是个什么结构?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++ 结构体所占字节数
在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列,而不是简单地顺序排列,这就是内存对齐。       内存对齐的原因:       1)某些平台只能在
结构体在内存中所占字节大小计算
今天上课,老师给我们演示了一下,计算结构体在内存中所占的字节大小。开始给了我们几个例子,然后要我们自己mo
struct结构体占内存大小计算
struct结构体占内存大小计算      注意:struct 的{}后面要加上 ”;“ #include struct A {            int a;           double b;            char c; }; struct B {            double b;            
[C++][基础概念](一)结构体所占内存大小的判断
以下内容是在做牛客网的选择题遇到的困惑和总结,其中主要是引用的别人的博客或者答案,和加入了自己的一些总结,方便以后翻过来看时更加有条理。 一、理论说明   一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。 1.有两个原则: 原则一:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,
C语言中结构体变量到底占多大空间
结构体是C语言中
关于计算struct结构体占用空间
关于如何计算struct所占用空间的大小: 有人可能觉得不就是把结构体内所有变量所占空间加起来不就可以了吗?其实,这句话只对了一半,所有变量所占空间要加起来没错,但是机器为了更加容易的取出struct里面的数据,会将里面的变量所占空间进行对齐。这是以空间换时间的一种方式。 如何进行对齐呢? 首先,是每个变量的偏移量对齐,每一个变量相对于首地址的位置就是偏移量。例如: struct data
结构体和枚举在内存中所占的实际大小
最近在面试中经常会遇到结构体在内存在所占字节的问题,本文总结如下:
在C语言中各种数据类型各占多少位 C语言 中结构体的位域(位段)
(一)32位平台: 分为有符号型与无符号型。 有符号型: short 在内存中占两个字节,范围为-2^15~(2^15-1) int 在内存中占四个字节,范围为-2^31~(2^31-1) long在内存中占四个字节,范围为-2^31~2^31-1 无符号型:最高位不表示符号位 unsigned short 在内存中占两个字节,范围为0~2^16-1 unsigned int 在内
C语言 - 结构体所占字节数
在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列,而不是简单地顺序排列,这就是内存对齐。       内存对齐的原因:       1)某些平台只能在特定的地
iOS开发之32位与64位,以及结构体对齐访问的问题
首先说32位与64位的问题, 1.之前不清楚iOS是32位还是64位的时候,看见sizeof(int) 打印出来的结果是4的时候,就单纯地以为是32位的系统,即便是看到Mac的“关于本机”里的内存大小清清楚楚地写着是16G(64位OS内存一般为16G,即2的64次方),我也天真地以为大概macOS 和iOS 两者位宽大概不一样吧。因为楼主以前学Linux的,我清清楚楚地记得老师说:int 整型