gpt4 book ai didi

c - 查找具有不同实例的结构的地址

转载 作者:行者123 更新时间:2023-11-30 19:16:43 25 4
gpt4 key购买 nike

在准备考试时,我遇到了一个有趣的问题。

我有一个结构:

struct vehicle {
long carId;
short wheels:3;
short fuelTank : 6;
short weight;
} x[5][5];

x 的地址是 0xaaa,内存以 4 的倍数对齐,x[1] 的地址是多少?

我不知道从哪里开始,但我发现结构体的大小是 16,而 x[5][5] 时结构体的大小是 400,这显然是 16 的倍数。答案之一是:

a) 0xD2 b) 0xEA c)0xDC d) 0xAB

但我不知道如何从 0xaaa 到其中之一。

最佳答案

正如问题中所写的“...内存以 4 的倍数对齐”,假设 long 类型占用 4 个字节。

两个相邻的位域

short wheels:3;
short fuelTank : 6;

可以容纳在一个 short int 类型的对象中。因此它们占用两个字节(尽管在一般情况下它是实现定义的),与下一个数据成员的方式相同

short weight;

因此我们得到结构体的大小等于8字节。

x[1] 是数组的第二个元素,类型为 struct vechicle[5]因此,由于结构体的大小等于 8,因此数组元素的大小等于8 * 5 = 40。在十六进制表示法中,它等于0x28

因此,x[1] 数组的第二个元素的地址为

0xaaa
+
0x28
=====
0xad2

关于c - 查找具有不同实例的结构的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29707064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com