假设我有这个
typedef struct{
int n;
double* x;
}array;
array a;
double* a_;
array b;
double* b_;
是&a_-&a == &b_-&b
,依此类推每一对数组/双*?
在否定的情况下,如何才能确保这一点?
答案 0 :(得分:4)
您不能依赖具有任何特定关系的单独变量的地址。此外,您无法有效地将地址减去不同的变量。
也许如果你能澄清为什么你想要这个(你想做什么?),那么实际上可以提供帮助。
答案 1 :(得分:1)
编译器可以在变量之间添加填充字节。通常,它取决于数据的对齐方式。
答案 2 :(得分:1)
保持一起声明一个结合了2个元素的结构...
答案 3 :(得分:0)
我认为它依赖于编译器,并且规范中没有修复局部变量的顺序。
您可以尝试创建一个用#pragma pack
包装这些成员的结构,以避免编译器最终添加任何填充字节。