一、题目
*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