应该选哪一个,有专家详细讲讲吗
假定结构体类型cont_info的声明如下:
struct cont_info {
char id[8];
char name[16];
unsigned post;
char address[100];
char phone[20];
};
若变量 x 的数据类型为 struct const_info,x 的首地址为 0x8049820,则字段 x.phone 的起始地址为
①0x8049993
②0x8049973
③0x80498cd
④0x80498b9
char id[8]; 占8个字节
char name[16]; 占16个字节
unsigned post; 占4个字节
char address[100]; 占100个字节
char phone[20]; 占20个字节
这里面最大的类型是unsigned (int) 类型,结构体中的每个元素的大小都是4的倍数,所以不需要补齐内存。
x.phone 的地址是 0x8049820 + 8+16+4+100 =0x80498a0
你这选项没有答案啊,下面是在vs上运行的结果,两个地址的差距是0x80(也就是128)
供参考:
#include <stdio.h>
struct cont_info {
char id[8];
char name[16];
unsigned post;
char address[100];
char phone[20];
};
int main()
{
struct cont_info x;
printf("%d\n", sizeof(x));
printf("0x%p", 0x8049820 + (char*)&x.phone - (char*)&x);
return 0;
}
//148
//0x080498A0
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!