3
if (vector1.x > ((float*)&vector1)[j])

j只是向量的索引吗?
例如,即使向量不是数组,C++ 是否能够使用数组表示法检索这些值?
如果是这样,我猜它是通过地址引用向量来实现的?

4

1 回答 1

11

C++ 标准说,将(pods)结构的指针转换为其第一个元素类型的指针将产生指向其第一个元素的指针:

struct a {
    float a1;
    float a2;
    float a3;
};

a o1; ((float*)&o1); // points to o1.a1

我怀疑代码告诉编译器不要在 a1、a2 和 a3 之间添加任何填充,这样如果它索引指针,它将精确地指向它想要的浮点数。所以上面

((float*)&o1)[1] // *would* return o1.a2

这取决于平台,因为在标准 C++ 中无法更改填充。查找该代码的排列方式,以及我是否完全正确:)

于 2009-01-01T13:23:47.990 回答