gpt4 book ai didi

c - 寻求 C 联盟的清晰度

转载 作者:太空狗 更新时间:2023-10-29 14:52:10 27 4
gpt4 key购买 nike

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.

但我并不是真的在摸索 union 宣布了多少存储空间(4 个 float ?8 个 float ?12 个 float ?),如何?为什么?还有为什么在使用 FltVector {{}} 时需要两组大括号?

为什么要使用 union 体?为什么不这样做..

   struct FltVector {
GLfloat x;
GLfloat y;
GLfloat z;
GLfloat w;
}

?

非常感谢任何指点(抱歉双关语)

最佳答案

如果 sizeof(GLfloat) == sizeof(float) 那么,已经分配了 4 个 float 。

flts[0]rx 在这里都指向同一 block 内存。

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

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

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com