c++ - 有人可以解释这个 C++ 符号吗?

标签 c++ arrays notation

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/

相关文章:

c++ - 具有模板模板参数的CRTP派生类

c++ - 开罗 - 多线程 - 在 cairo_image_surface_create 期间卡住

C++将类中的函数传递给另一个函数

c++ - CUDA如何欺骗内核认为它在另一个线程中?

javascript - Typescript - 数组到 block

c++ - uint32_t,用于表示变量大小的 int_t 表示法

notation - 图论中的绝对值条是什么意思?

php - 如果 $a 和 $b 都是数组,那么 $a+$b 的结果是什么?

javascript - postman :在环境变量的声明中使用请求名称

ruby - %w(array) 是什么意思?