首先定义一个结构体 struct object{ char a; char b; int c; }; 要求该结构体类型的字节大小,需要了解结构体内存对齐,以下是结构体内存对齐的相关规则: 1)第一个成员变量在与结构体变量偏移量为0的地址处; 2)其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处
和对齐有关,因此不同的编译环境,甚至同一个编译器的不同设置下都可能有不同结果……
void main(){ struct {char a;int b;char c ;}A;struct { char a; char b;int c ;}B;printf("%d\n",sizeof(A));printf("%d\n",sizeof(B));} 就可以解决,为什么一个是12而另外一个是8呢,那就要考虑字节对齐的问题了,具体要想知道这个是如何对齐的,你可以在网上搜索sizeof的用法...
变量a所占的内存字节数是___。 union U { char st[4]; int i; long 1; }; struct A { int c
一般编译器为 12 个字节.因为 一般编译器 定义 int 为 4 字节,short 为 2字节, char 为 1字节,而且要考虑 内存分配 4 字节对齐.int a; -- 需要 4 byteschar b; -- 需要 1 byteshort c; -- 需要 2 bytesshort d; -- ... 分析总结。 因为一般编译器定义int为4字节short为2字节char为1字节而...
百度试题 结果1 题目若有定义“struct AA {int a; char b; double c;}x;”,则x 占用空间大小为 ___字节。相关知识点: 试题来源: 解析 正确答案:[13] 分值:[1] 反馈 收藏
char a; // 地址范围为[0],占1字节 short b; // 地址范围为[2:3],占2字节,首地址2须为2的整数倍,前面填充了1个字节 char c; // 地址范围为[4],占1字节 int c; // 地址范围为[8:11],占4字节,首地址8须为4的整数倍,前面填充了3个字节 }s1;地址范围为[0:11],中间填充...
** ** ** **A. B. C. D 相关知识点: 试题来源: 解析 B [解析] 结构型变量占用的内存字节数等于该结构型所有成员占用的字节数之和,char a占1个字节,long b占4个字节,float c占4个字节,所以abc共占9个字节。反馈 收藏
int 4字节 char 1字节 double 8字节 这是VC中的情况,默认是这种情况 turbo C中int 2字节
12, int型每个占4个字节,(4×2).指针变量占4个字节下面是关于内存对齐的内容:内存对齐问题看之前可以看看一个例子,看你的结果是多少,是否出乎你的预料?class Test{public:short int a;int b;char c[5];public:Test():b(0x1234), a(b){c[0]='h';c[1]='e';c[2]='l';c[3]='l';c[4]=...