假设我有这个对变量/结构的偏移是否一样?
typedef struct{
int n;
double* x;
}array;
array a;
double* a_;
array b;
double* b_;
是&a_-&a == &b_-&b
,依此类推,每对夫妇阵列/双*?
在否定的情况下,如何确保这一点?
假设我有这个对变量/结构的偏移是否一样?
typedef struct{
int n;
double* x;
}array;
array a;
double* a_;
array b;
double* b_;
是&a_-&a == &b_-&b
,依此类推,每对夫妇阵列/双*?
在否定的情况下,如何确保这一点?
您不能依赖具有任何特定关系的单独变量的地址。另外,您不能有效地将地址减去不同的变量。
也许如果你可以澄清为什么你想这(你想要做什么?)这将是可能的真正帮助。
XY问题,那是... – 2013-03-01 16:10:27
编译器可以自由地在变量之间添加填充字节。一般来说,这将取决于数据的一致性。
不,一些编译器会将“小”变量放在与大结构体\数组不同的位置。
为了保持在一起声明,结合了2元一个struct ...
我认为这是编译器的依赖,且局部变量的顺序不是固定的规范。
您可能会尝试创建一个结构,将这些成员换成#pragma pack
以避免编译器最终添加的任何填充字节。
我想声明一个别名的double * x外部结构与结构相同的名称,但后跟一个下划线。 – Fabio 2013-03-01 16:11:59
@userXXX那么你为什么不只是**做到这一点?** – 2013-03-01 16:12:55
编译器可以自由地在它认为合适的地方安排变量,或者甚至在不需要它们的时候完全丢弃它们。 – vonbrand 2013-03-01 16:18:26