怎么样用一个函数返回共用体 怎么样用一个函数返回共用体

作者&投稿:言肺 (若有异议请与网页底部的电邮联系)
一个简单的共用体比如 union uu{int a; double b;} obj;
可以通过一个间接的转换得到成员值: *(int*)&obj, 或者*(double*)&obj。 (更简单的办法不清楚有没有。。)当然这个完全可以用模板来写

template <_Ty, _UTy>
_Ty& QueryValueByType(_UTy uni) {return *(_Ty*)&uni; }

调用就是 QueryValueByType<int>(obj) 当然你要自己确保类型正确了

C 语言:
#include <stdio.h>
#include <stdlib.h>

// 用 typedef 定义 共用体 为 UU型变量
typedef union {float a; long int b;} UU;

// 下面函数送返 UU型
UU QueryValueByType(int t) {
UU y;
y.b = t;
return y; }

void main()
{
UU x;
int t=2;
x = QueryValueByType(t); // 调用,返回值存 UU型 x
printf("%d",x.b); // 看结果

}

函数可以返回一个共用体变量吗?为什么?解释清楚点~

书上说不可以,我质疑了,我自己试了下,下面代码是正确的,我在VC++6.0和Cfree5.0运行都是正确,没有出现任何错误!!1

#include
union data
{
int i;
char c;
float f;
}a;
union data f1(int n)
{
union data dd;
dd.i=n;
return dd;
}
union data f1(union data d)
{
union data dd;
dd.i=d.i;
return dd;
}
int main()
{
int n=10;
union data d,qq,ss;
d.i=20;
qq=f1(d);
ss=f1(n);
printf("%d %f %d
",qq.i,qq.f,qq.c);
printf("%d %f %d
",ss.i,ss.f,ss.c);
return 0;
}

一个简单的共用体比如 union uu{int a; double b;} obj;
可以通过一个间接的转换得到成员值: *(int*)&obj, 或者*(double*)&obj。 (更简单的办法不清楚有没有。。)当然这个完全可以用模板来写
template
_Ty& QueryValueByType(_UTy uni) {return *(_Ty*)&uni; }
调用就是 QueryValueByType(obj) 当然你要自己确保类型正确了

C语言基础知识总结大全
答:1、入门程序: 2、数据类型: (1)基本数据类型:整型:int4个字节、字符型:char1个字节、实型(浮点型)。 (2)构造类型:枚举类型、数组类型、结构体类型、共用体类型。 3、格式化输出语句 %d:十进制整数。 %c:单个字符。 %:字符串。 %小数。 4、常量 值不发生改变的量成为常量。 定义字符常量(注意后面没有。

C语言中一个子函数怎么调用另一个子函数的运算?
答:方法很多。主要是要将不同类型传递给fun2处理。最简单float类型最大,fun2的参数类型就定义为float,然后运算结果返回float类型。在main函数用a3,b3,c3接收的时候强转型。另一种方法,把变量都转换成一种类型传递。这里用union共用体类型就比较适合。还方便扩展,如果想添加其他类型还可以在union里添加。...

C语言共用体内结构体
答:可以的哈!举个简单的例子吧,希望楼主能理解!!!include<stdio.h> include<string.h> typedef union { unsigned char data_L[64];struct{ char L1[16];char L2[16];unsigned char L3[16];unsigned char L4[16];}data_M;}data_t;void main (){ data_t a;strcpy(a.data_M.L1,"he...

关于共用体变量
答:浮点数在机器内部使用(阶码+尾数)的一套规则和整数有很大差别,高级语言(比如C)标准库已经给我们提供了浮点数的输出函数,如C语言的printf()函数。因为整数的存取规则和浮点数的存取规则的差异性,给公用体变量内存段赋整数值在用浮点数输出的话就会产生乱码。比如在这里如果使用printf("%f",a.d);...

C语言中,共用体能作为函数的返回值类型吗
答:判断它的char的成员是不是-1呗,不过这样不好。union一般用于不同类型但是地位等价的数据,你这种情况,要么只返回是否成功,值用指针参数传进来;或者返回堆上的struct指针,如果为NULL就是失败

C语言 关于 结构体与共用体 问题
答:void fun(struct nc b)//没有用void的话默认为int,需要 一个返回值 {b.x=20;b.c='y';//少个单引号 } 这个和传递值一样的呀。。你传的只是形式上的结构。。这个结构所作用的只是在子函数里,对主函数不作用。对原来的结构也没有改变啊 你想改变他必需要通过地址或者指针来!!!楼主好...

跪求C语言函数调用的详细过程,函数之间是怎么传递的,到底是怎么发生调用...
答:C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。 三.掌握一些简单的算法 编...

共用体的作用和用途有哪些啊?
答:3.共用体变量的地址和它的各成员的地址都是同一地址。4.不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,并且,不能在定义共用体变量时对它进行初始化。5.不能把共用体变量作为函数参数,也不能是函数带回共用体变量,但可以使用指向共用体变量的指针。6.共用体类型可以出现在结构体类型...

C语言基础知识总结大全
答:形参:形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数; 实参:实参是在调用时传递该函数的参数。 函数的形参和实参具有以下特点: 形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该...

c语言里,怎样判断共用体union的数据类型?
答:以此类推,int一般是32位的,union最多可以有32个成员,成员多了可以再扩展标识变量(比如使用64位的long long 类型)。然后写一套操作函数:初始化mydata,设置成员值,获取当前设置的成员值(可返回具体类型,union的每个成员需要对应一个get),判断当前某个成员被设置,判断当前是否设置过成员值。自己...