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

作者&投稿:雕泽 (若有异议请与网页底部的电邮联系)
函数可以返回一个共用体变量吗?为什么?解释清楚点~

书上说不可以,我质疑了,我自己试了下,下面代码是正确的,我在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) 当然你要自己确保类型正确了

一个简单的共用体比如 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); // 看结果

}


如何用VLOOKUP函数查找一个值返回多个结果?
“VLOOKUP函数查询一个值返回多个结果”的操作步骤是:1、打开Excel工作表;2、由题意可知,A列存在着多个相同的项目,而VLOOKUP函数通常只返回精确匹配到的首个条件,并返回对应的数据,而无法返回多个相同条件所对应的数据;这就需要通过辅助列的形式,将多个相同的条件按出现的先后编号,并被后面的查找...

c语言中,函数返回值怎么用?
return后接一个值。在调用这个函数的函数里面,调用它的时候希望获得一个值,如果不希望获得这个值的时候,用void声明就好。如果需要,比如说需要得到一个整形值 就声明 int func()在调用它的比如main里面 func()的作用就可以相当于一个int型常数 比如外面定义了 int max(int a,int b){ return a>...

如何在excel的if函数的返回某一个单元格的数值(即引用某单元格的值...
首先在电脑上用2007版PPT软件打开目标文件。2、然后在C1单元格中输入公式:=IF(B1=A1,"重复",B1),回车一下。3、由于A1与B1的内容不同,所以C1中就显示了B1的内容,如图所示。4、然后用鼠标双击C1单元格的右下角,将公式格式填充给此列其它单元格。5、完成以上设置后,即可达到提问者的要求。

excel中怎样用函数表示符合条件的返回值
假设a列是购物金额,是1000以内的,然后我们设了三个档次,100元以内按90%收款,100-500按80%收款,500以上按70%收款,那么在b列我们要求返回折扣后应收款,第一行是标题,从第二行开始 b2列写如下公式:=a2*if(a2<100,0.9,if(a2>500,0.7,0.8))讲解:用if函数返回一个值,if函数先列出...

如何用一个函数,把两个数组参数相加并返回?
int *ArrAdd(int[] a,int alength,int[] b,int blength){\/\/传进去两个数组及其长度 if(alength!=blength){ cout<<"Length Not equal"<<endl;return NULL;} int* temp=new int[alength];for(int i=0;i

excel表格返回1函数怎么用excel返回函数怎么使用
2、如果没有数字就返回0。在C1中输入或复制粘贴下列公式=IF(OR(A1>0,B1>0),1,0)下拉填充2、A1和B1中都有数字大于0,只需要返回1个1。3、不需要返回2个1在C1中输入或复制粘贴下列公式=IF(AND(A1>0,B1>0),1,0)下拉填充最后:在一个单元格中把所有返回的1相加起来,计算和。在D1中输入...

EXCEL中如何是使用LOOKUP函数查找并返回最后一个相同值
在EXCEL中,我们常常使用vlookup函数查找相同的数据,可以跨工作表查找,同时还能跨工作并查找,非常方便!仍然,问题出在vlookup函数只能查找相同值的第一个值。如果我们要想查找相同值的最后一个值,就不能使用该函数了,得使用如下方法,请认真阅读,或许对您有帮助。下面,我们使用的函数是LOOKUP函数。先...

在c语言中怎样使用return返回一个值?
使用return 语句。在此程序计算n的累加求和,先定义函数后,在函数中计算好结果,利用return 语句,将结果返回。在main()函数中调用asum函数,即可得到函数的结果,并将它在主函数输出。例如 include<stdio.h> int asum(int n){ int i=0,sum=0;while(i<=n){ sum=sum+i;i++; } return...

Excel VLOOKUP函数怎么查询一个值返回多个结果
Excel VLOOKUP函数在处理需要返回多个结果的查询时,可能需要一些巧妙的技巧。当你在A列有多个相同值(如“张三丰”),希望获取每个值对应的“工号”时,传统的VLOOKUP可能无法满足需求,因为它默认只返回第一个匹配结果。首先,你需要扩展你的思考。在原始数据的“姓名”列前,插入一列并使用COUNTIF函数...

c怎么使一个函数返回2个值?
如果都是返回数字类型的,,你可以分高位和低位来返回两个值,,如果是其它类型的,,可能只能通过传入参数来实现了。比如你要返回两个 USHORT,你可以返回一个 ULONG,然后在高位保存第一个值,低位保持另一个值,,得到返回值的时候再分别读取。如果是其它的,如字符串等,那就通过传入参数来实现吧。void...

金阊区19168077190: 怎么样用一个函数返回共用体 -
仲孙玉管通: 一个简单的共用体比如 union uu{int a; double b;} obj; 可以通过一个间接的转换得到成员值: *(int*)&obj, 或者*(double*)&obj. (更简单的办法不清楚有没有..)当然这个完全可以用模板来写template <_Ty, _UTy> _Ty& QueryValueByType(_UTy uni) {return *(_Ty*)&uni; }调用就是 QueryValueByType(obj) 当然你要自己确保类型正确了

金阊区19168077190: 函数可以返回一个共用体变量吗?为什么?解释清楚点 -
仲孙玉管通: 共用体类型数据的特点5.不能把共用体变量作为函数参数,也不能是函数带回共用体变量,但可以使用指向共用体变量的指针.详情参阅百度百科

金阊区19168077190: C语言:一个函数只能返回一个值吗? 如果不是,怎样返回多值? -
仲孙玉管通: 返回一个数组就可以了.如果想返回不同类型的值,先定义个结构体,把要返回的值存入结构体变量,再把这个结构体变量返回就行了.

金阊区19168077190: 请问c语言如何从函数返回带有数组的结构体? -
仲孙玉管通: 你说的这种情况,函数返回的是整个结构体,无论这个结构体中包含了多少个成员,一个结构体就只是一个变量(结构体本身就是一个变量,无论它包含了多少个成员).这样,函数返回一个结构体就意味着函数把结构体中所有的成员都返回了.C语言函数的确只能有一个返回值,用返回结构体的方式就很好地解决了需要返回多个返回值的问题.return后面没有0或1,说明这个函数是void类型的,这类函数本来就不需要有返回值,这里的return的意思并不是要返回某个值,而是退出这个函数的意思.

金阊区19168077190: C语言共用体 -
仲孙玉管通: 因为你这个是联合体,它在内存中每一个瞬间只能存放一个成员,共同体所占的内存的长度等于最长的成员的长度.这里的共同体占两个字节(一个字符占一个字节) a.ch[0]=13; a.ch[1]=0; 这两句在内存中是这样存放的0000 0000 0000 1101(计算机内是二进制);输出a.i其实就是这串数字的值.再举个列子,a.ch[0]=2;a.ch[1]=1;这时输出a.i=258;原因是这样的,0000 0001 0000 0010转化成十进制就是258了

金阊区19168077190: c语言中,如何返回多个结构体中的某一数据成员(函数的返回值有多个)…… -
仲孙玉管通: 可以采用引用的形式来进行值的改变 不能有多条return语句(除非在多个选择分支中) 一旦return就代表函数已经结束,下面的代码也就不会被执行.

金阊区19168077190: c语言程序中的结构体与共用体具体是真么一回事?如何定义与使用?有什么区别?求详解! -
仲孙玉管通: 下面是结构体,就是把变量集合在一起,包含多个变量,同时存在 struct point { int x;int y; }; 共用体是几种不同类型的变量存放到同一段内存单元中.使用覆盖技术,几个变量互相覆盖.这种几个不同的变量共同占用一段内存的结构.union data { int i; char ch; float f; }a,b,c; 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用.

金阊区19168077190: C语言共用体问题 -
仲孙玉管通: union pw是共用体,就是i和ch[2 ]共用一个内存空间地址.char类型是占一个字节,也就是8位二进制数.main函数中给ch[0]和ch[1]赋值分别为13和0,所以在共用体的存储空间上存储的二进制形式就是0000000000001101,就是13,i也用这个地址,所以i就是13.

金阊区19168077190: c++里函数怎么返回多个结构体变量 -
仲孙玉管通: 恐怕不行吧?只能返回一个结构体变量或指针变量.但可以返回结构体数组的指针,就可以间接返回同类型的多个结构体变量了……

金阊区19168077190: C语言:如何定义一个函数!使它返回多个值 -
仲孙玉管通: 可以有很多方法,如:1):自定义一个结构体,把你想要返回的信息放在结构体里返回.2):通过指针参数返回.3):映射同一内存区域..... 很多

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网