typedef union {
    float flts[4];
    struct {
        GLfloat r;
        GLfloat theta;
        GLfloat phi;
        GLfloat w;
    };
    struct {
        GLfloat x;
        GLfloat y;
        GLfloat z;
        GLfloat w;
    };
} FltVector;

好的,所以我想我知道如何使用它,(或者,这就是我所看到的)。
FltVector fltVec1 = {{1.0f, 1.0f, 1.0f, 1.0f}};
float aaa = fltVec1.x;
etc.

但是我并不是真的在提示联盟宣布了多少存储量(4个浮点数?8个浮点数?12个浮点数?),怎么办?为什么呢?另外,为什么在使用FltVector {{}}时需要两组花括号?

为什么要使用 union 呢?为什么不呢
   struct FltVector {
        GLfloat x;
        GLfloat y;
        GLfloat z;
        GLfloat w;
   }



非常感谢任何指针(对双关语很抱歉)

最佳答案

如果是sizeof(GLfloat) == sizeof(float),则已分配4个浮点数。

此处flts[0]rx都引用相同的内存。

在 union 中, union 中声明的每个不同变量都引用相同的内存。

在这里,我们有3个变量,2个结构和一个数组,每个变量都从内存中的同一点开始。

关于c - 寻求C联盟的清晰度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2873261/

10-12 15:14