|
|
1
5
如果
在联合体中,联合体中声明的每个不同变量都引用同一块内存。 这里我们有3个变量,2个结构和一个数组,它们从内存中的同一点开始。 |
|
2
5
|
|
|
3
2
@Arkku的尺寸是对的。对齐也可以发挥作用,但可能不是在这里。 为什么这是真的是在任何给定的时间工会只持有一个可能的价值观。由于这个原因,结构中的并集通常与标识哪个值有效(有时称为 歧视性结合 或 ). 一对大括号用于并集,另一对大括号用于数组初始化器。 |
|
|
4
1
|
|
|
5
1
在您的示例中,如果我们考虑变量的名称,那么union肯定不是用来通过x和r访问同一个存储单元的(因为半径和x坐标不太合适),而是让用户为两者提供相同的参数。当你使用笛卡尔坐标时,设置x,y,z,w要简单得多,如果用这些相同的名字来表示径向坐标的话会很尴尬。两者都比数组索引简单。您可能还有另一个参数,它给出了所提供坐标的类型(笛卡尔坐标或径向坐标)。因此,你将拥有一个被歧视的联盟,正如巴特利特所说的那样。
:双层大括号避免将输入强制转换为glfloat。 最后一个细节:未命名的内部结构不是标准的C,标准的方法是给内部结构命名,如
|
|
|
6
0
如前所述,代码使用不同的名称和数据类型分配相同的内存。有时允许处理命名向量组件(xyzw)会比较舒服,而在其他时候仍然可以将向量作为数组处理。 不过,笛卡尔结构和放射状结构的名称似乎互换了。”“r”、“θ”和“phi”是径向坐标的常用名称,而不是通常表示为“x”、“y”和“z”的笛卡尔坐标。 我认为值得注意的是,使用不同的表示并不严格符合标准(但可能在所有现有的C实现上都很好),原因有两个:
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 11 月前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 11 月前 |
|
|
Bobby · 复合字面值总是左值吗? 11 月前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 11 月前 |