结构体共用体

struct S{
char c;
int i[2];
double v;
};

union U{
char c;
int i[2];
double v;
};
如果 sizeof(int)=4,则下列域的相对偏移量是多少?
S.c______________ S.i_____________ S.v____________
U.c_____________ U.i___________ U.v____________
sizeof(S)=_____________
sizeof(U)=_____________
什么是偏移量

把结构体或者联合体想象成一个块
然后相对于这个块首来说,数据的存放起始地址与块首之间的字节数就是相对偏移量
S.c____0__________ S.i____1_________ S.v_____9_______
U.c_____0________ U.i_____0______ U.v_______0_____
sizeof(S)=_____17________
sizeof(U)=______8_______
S.c的起始地址就是这个结构体的块首,所以是0
char占一个字节,所以S.i就是1
依此类推
但联合体与之不同
它所占的内存区就是联合体内最大的那个数据的字节数,也就是那个double
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-04
偏移量就是一个地址对一个地址的相对量,比如地址3想对与地址1的偏移量是2.
关于sizeof()的用法到这去看看
http://www.newasp.net/tech/program/23114.html
相似回答
大家正在搜