1 原题:
17(题号):
在64位操作系统上,如下数据结构占用的存储空间大小为多少字节
struct A{
unsigned int a;
char b[2];
double c;
short d;
};
A 12 B 16 C 20 D 24
答案:
D
2直接在64位操作系统上编译运行,程序如下:
#include <stdio.h>
int main(int argc, char **argv)
{
struct demo{
unsigned int a;
char b[2];
double c;
short d;
}A;
int lenOfStructA = sizeof(A);
printf("size of struct A is:%d\n",lenOfStructA);
return 0;
}
3 运行结果如下
4 分析:
采用内存对齐存储,c的类型为double,占用8个字节,之前定义的a和b存储字节之和为6,也占用8个字节;之后的d也按照8字节对齐,故共占用8*3=24字节