Может ли кто-нибудь объяснить эту нотацию C++?
Вопрос
if (vector1.x > ((float*)&vector1)[j])
Является дж просто индекс вектора?
напримерможет ли C++ получить эти значения, используя обозначение массива, даже если вектор не является массивом?
Если да, то я предполагаю, что это достигается путем ссылки вектор по его адресу?
Решение
Стандарт 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++ нельзя изменить заполнение.Посмотрите, как этот код устроен и прав ли я вообще :)
Не связан с StackOverflow