Можно ли получить доступ к членам структуры напрямую как массив в C? - PullRequest
0 голосов
/ 14 апреля 2019

Я хотел бы иметь возможность (если возможно) с помощью одной переменной получить доступ как к массиву, так и к элементам структуры.Самое близкое, что я получил, было следующее:

typedef union {
    struct {
        float x;
        float y;
        float z;
    };
    float getItem[3];
} Vector3D;

Однако, если что-то делается таким образом, каждый раз, когда я хочу получить доступ к переменной Vector3D в виде массива, мне нужно сделать это следующим образом:

Vector3D vec;
vec.getItem[0] = 3.5f; //same as vec.x = 3.5f;
vec.getItem[1] = 8.4f; //same as vec.y = 8.4f;
vec.getItem[2] = vec.getItem[0] + vec.getItem[1]; //same as vec.z = vec.x + vec.y

Я хотел бы знать, есть ли какой-либо способ, с любой комбинацией typedef, структур, объединений и указателей (или с любым другим инструментом, который предоставляет C), использовать переменную как структуру и какуказатель на эту структуру, к которой можно обращаться как к массиву напрямую, например:

Vector3D vec;
vec[0] = 3.5f;
vec.y = 8.4f;
vec[2] = vec.x + vec[1];

Я встречал несколько решений для подобных проблем, таких как эта , но вна этот вопрос он предлагает создать другую переменную, которая является указателем на массив, тогда как я хотел бы получить доступ к массиву и структуре с одной и той же переменной, используя только одно объявление (как в моем примере).Есть ли способ сделать это?

...