是否可以在C语言中以数组形式直接访问结构成员?

时间:2019-04-14 13:07:25

标签: c pointers struct unions

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

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,但是在这个问题上,他建议创建另一个变量,该变量是指向数组的指针,而我想访问两个数组和具有相同变量的结构,只有一个声明(如我的示例)。有什么办法吗?

0 个答案:

没有答案