struct stud { int a[3]; char ch; double f; } stud1; 则结构体变量stud1占用内存的字节数是多少?
发布网友
发布时间:2022-07-15 04:02
我来回答
共2个回答
热心网友
时间:2023-11-19 13:17
如果int占用2字节,并且有对齐,则为:
3x2 + 2+ 8 =16
如果int占4个字节,并且有对齐,则为:
3x4+ 4 + 8 =24
这个不同系统上结果不一追问对齐是什么意思,请指教。
追答原则上说,char就是1个字节,但是机器每次读写都不是1个字节,像32位机一次读写就是4个字节,这样一个个孤零零的数据不会按照本身字节存放,而是按照机器字长对整齐,即使浪费了一些空间也没问题,提高的是读写效率
热心网友
时间:2023-11-19 13:17
不考虑字节对齐的情况下:
每个 int 通常都占 4 byte
char 占 1 byte
double 占 8 byte
所以是: 4*3 + 1+ 8 = 21
考虑四字节对应的情况下
每个元素最少占用 4 byte
所以 char 也要占用 4 byte, 结果就为 24 byte.
可以直接使用 sizeof(stud1) 得出它的 size
就可以知道你的电脑的支持情况