c – 施放到联盟

c – 施放到联盟,第1张

概述由于在C中的工会经验有限,我很难理解转换为该数据类型的基本机制. 假设Type_a和Type_b两种类型分别是int和long类型的包装器. 联合定义为: union Type_u { Type_a a; Type_b b;} 现在我有类型Type_a的东西,让我们称之为j(只是让人困惑).我需要将它传递给一个期望Type_u类型的参数的函数: void burninate(Ty 由于在C中的工会经验有限,我很难理解转换为该数据类型的基本机制.

假设Type_a和Type_b两种类型分别是int和long类型的包装器.

联合定义为:

union Type_u {    Type_a a;    Type_b b;}

现在我有类型Type_a的东西,让我们称之为j(只是让人困惑).我需要将它传递给一个期望Type_u类型的参数的函数:

voID burninate(Type_u peasants);

将此变量j传递给burninate的正确方法是什么? (我遇到了将j转换为Type_u以及按原样传递它的问题.都没有编译.)

值得指出的是,我没有能力修改联合类型(或Type_a或Type_b或者burninate的签名).

解决方法 由于Type_a是第一个元素,您可以像这样初始化一个联合:

Type_a j;Type_u u = {j};burninate(u);

如果要传递Type_b类型:

Type_b k;Type_u u;u.b = k;burninate(u);

C和C在这方面有所不同.在C99中,您可以使用指定的初始化程序来初始化不是第一个的元素.

Type_b k;Type_u u = {.b = k};burninate(u);
总结

以上是内存溢出为你收集整理的c – 施放联盟全部内容,希望文章能够帮你解决c – 施放到联盟所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1215541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存