如果我在C++中定义了如下结构体
struct ComplexFloat {
float r;
float i;
};
我声明两个变量,写法如下:
struct ComplexFloat cf;
float *f=(float*)cf;
我能否安全地假设以下条件始终成立
(&(cf.r)==&(f[0]) && &(cf.i)==&(f[1]))
换句话说,我可以安全地假设在一个包含浮点数的结构体中,其元素将在内存中占据连续的位置,并按照结构体定义中出现的顺序排序吗?
我测试了一下,在Ubuntu上使用gcc 4.8.2,这是正确的。我只是想确保它总是有效的。
cf
不是一个数组或指针。 - Some programmer dude