if (vector1.x > ((float*)&vector1)[j])
j 只是 vector 中的索引吗?
例如即使 vector 不是数组,C++ 是否能够使用数组表示法检索这些值?
如果是这样,我猜它是通过地址引用 vector 来实现的?
最佳答案
C++ 标准说,将 (pods) 结构的指针转换为其第一个元素类型的指针将产生指向其第一个元素的指针:
struct a {
float a1;
float a2;
float a3;
};
a o1; ((float*)&o1); // points to o1.a1
我怀疑代码告诉编译器不要在 a1、a2 和 a3 之间添加任何填充,这样如果它索引指针,它将精确地指向它想要的 float 。所以上面
((float*)&o1)[1] // *would* return o1.a2
这取决于平台,因为在标准 C++ 中无法更改填充。查看该代码是如何安排的,以及我是否完全正确:)
关于c++ - 有人可以解释这个 C++ 符号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404934/