一、題目
*struct T {
char a;
int *d;
int b;
int c:16;
double e;
};
T *p;
在64位系統以及64位編譯器下,以下描述正確的是
A: sizeof§ == 24
B: sizeof(p) == 24
C: sizeof(p->a) == 1
D: sizeof(p->e) == 4
二、解析
- p是一個指針,指針在32位機器上是4字節,在64位機器上是8字節,所以sizeof§=8;
- int占用4個字節,float占用4個字節,double占用8個字節,char占用1個字節,*p指的是結構體,所以sizeof(*p)=1+8+4+4+8=25;
- int c:16;是一個位字段,它只占用int類型中的16位。但是,它仍然會占用至少一個int類型大小的存儲單元
答案:C