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?
您不能依赖具有任何特定关系的单独变量的地址。此外,您不能有效地将地址减去不同的变量。
也许如果你能澄清你为什么想要这个(你想做什么?)它可能会真正提供帮助。
不,一些编译器会将“小”变量放在与大型结构\数组不同的位置。
为了保持在一起,声明一个结合了 2 个元素的结构......
编译器可以自由地在变量之间添加填充字节。一般来说,这将取决于您的数据的对齐方式。
我认为它取决于编译器,并且局部变量的顺序在规范中没有固定。
您可以尝试创建一个用 a 包装这些成员的结构,#pragma pack
以避免编译器最终添加任何填充字节。