首页 > 解决方案 > 是否可以在 C 中直接访问结构成员作为数组?

问题描述

我希望能够(如果可能)通过单个变量访问数组和结构成员。我得到的最接近的是以下内容:

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];

我遇到过类似问题的一些解决方案,例如this one,但在那个问题中,他建议创建另一个变量,它是指向数组的指针,而我想使用相同的变量,只有一个声明(如我的示例中)。有什么办法吗?

标签: cpointersstructunions

解决方案


推荐阅读