读书人

关于struct内union的sizeof的有关问题

发布时间: 2012-08-11 20:50:31 作者: rapoo

关于struct内union的sizeof的问题
下面直接贴代码了 请见谅

C/C++ code
#include <iostream>using namespace std;struct tmp{    int    nData;    double    dData;    char    cData1;    union    {        int    nDatainUnion;        double    dDatainUnion;    };    char    cData2;};union uTemp{    int    nDatainUnion;    double    dDatainUnion;};int main(){    tmp test;    cout << (int)&(test.cData1) - (int)&(test.nData) << endl;    cout << (int)&(test.cData2) - (int)&(test.cData1) << endl;    cout << sizeof(tmp) << endl;    cout << sizeof(uTemp) << endl;    cout << sizeof(tmp) - sizeof(int) - sizeof(double) - sizeof(char)*2 << endl;    return 0;}


结果我有点不明白 为什么同样是同一种组成的union

sizeof(tmp) - sizeof(int) - sizeof(double) - sizeof(char)*2 与 sizeof(uTemp) 为什么不等?

[解决办法]
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

读书人网 >C语言

热点推荐