unions相关内容

为联合分配内存以及联合指针和指针联合之间的区别

由于我的问题此处无法自信地回答,我希望在这里再次提问某人肯定知道: 指向联合的指针与包含指向其元素的指针的联合之间是否存在任何区别(在语法上)?此示例中生成的程序集是相同的. 只要我从不访问其他成员,是否可以只为其中一个成员(不是最大的)分配内存? 关于第二个问题,C89草案的6.5.2.1说: 联合的大小足以容纳其最大的成员-最多可以随时将一个成员的值存储在联合对象中.适当地 ..
发布时间:2021-04-21 19:43:59 其他开发

C ++将联合强制转换为其成员类型之一

以下对我来说似乎很合乎逻辑,但不是有效的c ++.联合不能隐式转换为其成员类型之一.有人知道为什么不这么做吗? 工会u {我字符c;}函数f(int i){}int main(){紫外线;v.i = 6;f(v);} 任何人都可以提出一个更干净的选择(我可以想到的最干净的是 f(vi); ,我承认这是非常干净的,但是以上内容看起来更干净) 解决方案 虽然同意Crazy Eddie的看 ..
发布时间:2021-04-21 19:43:40 C/C++开发

C ++ 11是否允许非匿名联合包含静态数据成员?

在C ++ 11中,我声明以下联合: 联盟U4 {字符c;我静态整数}; 当我使用-std = c ++ 11 -pedantic-errors在g ++ 4.7.0中编译此代码时,出现以下错误(仅进行了少量编辑): 错误:本地类"Union U4"不应具有静态数据成员"int U4 :: si" [-fpermissive] 错误:"U4 :: si"可能不是静态的,因为它是工会的 ..
发布时间:2021-04-20 18:37:51 C/C++开发

检查联合实例之间是否相等的正确方法是什么?

我有一个多线程应用程序,将数据存储为以下联合实例的数组 union unMember {浮动fData;unsigned int uiData;}; 存储此数组的对象知道联合中的数据是什么类型,因此在检索正确的类型时,UB不会出现问题.但是,在程序的其他部分,我需要测试这些联合的2个实例之间的相等性,并且在代码的这一部分中,真正的内部数据类型未知.其结果是,我无法使用这种方法测试联合的平等 ..
发布时间:2021-04-19 19:58:12 C/C++开发

使用联盟作为参考

在工作中,我一直在使用Linux和C ++ 11和C ++ 14的GCC编译器.在工作中的某些代码中,我使用联合来存储引用和指针,如下所示:(简化为重要部分) struct MyStruct{//东西联盟{double&X;double * x_ptr;};MyStruct(double& value):x(value){}//更多东西}; 我相信这段代码清晰,可读,明确,并提供了一种方便 ..
发布时间:2021-04-19 18:50:26 C/C++开发

为什么我的工会的规模比我预期的要大?

当我像这样打印联合的大小时: 工会u {字符c [5];我} un; 使用此: int _tmain(int argc,_TCHAR * argv []){printf("union size =%d",sizeof(un));返回0;} 使用Visual C ++得到的答案是8,但是我希望是5.为什么? 对于同一示例,我做了这样的事情: int i1 = 0x987612 ..
发布时间:2021-04-19 18:45:05 C/C++开发

关于C中的并集的问题-作为一种类型存储,而作为另一种类型读取-是否定义了实现?

据我了解,我从K& R中了解到C中的并集,一个并集中的单个变量可以容纳几种类型中的任何一种,并且如果将某物存储为一种类型并提取为另一种类型,则结果纯为实现已定义. 现在,请检查以下代码段: #includeint main(无效){联盟{我字符ch [2];};联合你u.ch [0] = 3;u.ch [1] = 2;printf(“%d%d%d \ n",u.ch [ ..
发布时间:2021-04-17 18:33:48 其他开发

结构与联合之间的区别

有没有很好的例子来说明 struct 和 union 之间的区别?基本上,我知道 struct 使用其成员的所有内存,而 union 使用最大的成员内存空间.操作系统级别是否有其他差异? 解决方案 使用联合,您只能使用其中一个元素,因为它们都存储在同一位置.当您要存储可能是几种类型之一的东西时,这很有用.另一方面,结构的每个元素都有一个单独的存储位置,并且所有这些元素都可以一次使用. ..
发布时间:2021-04-17 18:32:16 其他开发

将位字段转换为字节数组

我有一些mpeg ts位字段,例如传输流包: struct ts_package_header_s {unsigned intcontinuity_counter:4;unsigned int Adaptation_field_control:2;unsigned int transport_scrambling_control:2;unsigned int PID:13;unsigned i ..
发布时间:2021-04-16 20:27:04 其他开发

结构如何存储在内存中?

我的代码中有一个 struct iof_header 结构,我确定它的宽度为24个字节.我执行了sizeof(iof_header),它返回32字节宽. 问题1 为什么它的宽度是32个字节而不是24个字节? 问题2 包括其成员在内,结构如何存储在内存中? 问题3 每当我创建字节之一的结构之一时,我就会发现[4-8&20-24]都是NULL,我在char数组中看到了这一点.数组如下 ..
发布时间:2021-04-16 20:12:40 C/C++开发

打字稿有联合,所以枚举是多余的吗?

自从TypeScript引入并集类型以来,我想知道是否有任何理由声明枚举类型。考虑下面的枚举类型声明: 枚举X {A,B,C} var x:X = XA ; 和类似的联合体类型声明: type X:“ A” | “ B” | “ C” var x:X =“ A”; 如果它们基本上具有相同的目的,并且工会更强大且更具表现力,那么为什么枚举是 ..
发布时间:2020-10-30 03:08:24 其他开发

将结构指针转换为联合指针

我有一个工会,其中包含各种兼容的 struct 成员: 枚举类型{T1,T2,…}; struct S1 {枚举类型类型; …}; struct S2 {枚举类型类型; …}; … 联合U { 枚举类型类型; struct S1 as_s1; struct S2 as_s2; … }; 处理这些结构的 type 字段为不可变的,并且仅访问与当前 ..
发布时间:2020-09-29 23:21:21 其他开发