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]
,r
和x
都引用相同的内存。
在 union 中, union 中声明的每个不同变量都引用相同的内存。
在这里,我们有3个变量,2个结构和一个数组,每个变量都从内存中的同一点开始。
关于c - 寻求C联盟的清晰度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2873261/