2

suppose I have this

typedef struct{
  int n;
  double* x;
}array;

array a;
double* a_;

array b;
double* b_;

Is &a_-&a == &b_-&b, and so on for every couple array/double*?

In the negative case, how is possible to ensure this?

4

4 回答 4

4

您不能依赖具有任何特定关系的单独变量的地址。此外,您不能有效地将地址减去不同的变量。

也许如果你能澄清你为什么想要这个(你想做什么?)它可能会真正提供帮助。

于 2013-03-01T16:10:07.613 回答
1

不,一些编译器会将“小”变量放在与大型结构\数组不同的位置。

为了保持在一起,声明一个结合了 2 个元素的结构......

于 2013-03-01T16:12:55.310 回答
1

编译器可以自由地在变量之间添加填充字节。一般来说,这将取决于您的数据的对齐方式。

于 2013-03-01T16:11:05.083 回答
0

我认为它取决于编译器,并且局部变量的顺序在规范中没有固定。

您可以尝试创建一个用 a 包装这些成员的结构,#pragma pack以避免编译器最终添加任何填充字节。

于 2013-03-01T16:13:46.603 回答