读书人

有关于结构体自己有关问题

发布时间: 2012-03-04 11:13:34 作者: rapoo

有关于结构体自己问题
设有以下结构类型说明和变量定义,则变量a在内存所占字节数是____________。
struct stud
{ char num[5];
int s[2];
double ave;
} a,*p;

我这样理解;char 类型一个字节
int 类型4个字节
double 类型8个字节
那a应该表示21个字节;
但是我用VC来做。请看我调试程序
#include <iostream.h>
void main()
{
int temp;
struct stud
{
char num[5];
int s[2];
double ave;
} a;

temp=sizeof(a);

cout < < "struct= " < <temp < <endl;

}
运行结果 struct=24
这是为什么呢?我的那里错了



[解决办法]
对齐问题
[解决办法]
编译器会将结构体中的变量按照自动对齐原则存放在内存中,而自动对齐的规则是按照最大类型看齐,这里double类型占8字节,是最大类型,那么num和s要向它看齐,num是char[5]占5字节,则将另外3字节补0,s是int[2]占8字节,正好是8的倍数,则无须补齐
因此8+8+8 = 24

读书人网 >C语言

热点推荐