struct stud { int a[3]; char ch; double f; } stud1; 则结构体变量stud1占用内存的字节数是多少?

怎么做?要过程。

如果int占用2字节,并且有对齐,则为:
3x2 + 2+ 8 =16
如果int占4个字节,并且有对齐,则为:
3x4+ 4 + 8 =24
这个不同系统上结果不一追问

对齐是什么意思,请指教。

追答

原则上说,char就是1个字节,但是机器每次读写都不是1个字节,像32位机一次读写就是4个字节,这样一个个孤零零的数据不会按照本身字节存放,而是按照机器字长对整齐,即使浪费了一些空间也没问题,提高的是读写效率

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-04
不考虑字节对齐的情况下:
每个 int 通常都占 4 byte
char 占 1 byte
double 占 8 byte
所以是: 4*3 + 1+ 8 = 21
考虑四字节对应的情况下
每个元素最少占用 4 byte
所以 char 也要占用 4 byte, 结果就为 24 byte.

可以直接使用 sizeof(stud1) 得出它的 size
就可以知道你的电脑的支持情况
相似回答