C语言中函数调用怎么返回两个值在C语言中,函数只能返回一个值,要返回两个值,可以改换思路 , 通过其它方式做到 。
1 建立数组 , 返回指针 。
在要返回的两个值类型相同时,可以用创建数组的方式,将要返回的值存在数组中,并返回数组首地址 , 这样就可以实现返回两个值的效果 。
需要注意的是,要返回数组首地址,那么返回的值不可以是局部变量,有如下几种是可以的:
a) 使用静态局部变量存储,并返回地址;
b) 使用全局变量存储 , 返回地址;
c) 函数中动态分配内存,并返回申请到的地址,此种方法需要注意,在使用后需要释放;
d) 在参数中传入数组地址,并返回 。即返回的实际上是主调函数中的变量地址 。
2 建立结构体,返回结构体变量 。
将需要返回的值,写成结构体形式,并返回结构体变量,这样可以实现一个返回值中含有多组数据 。
3 当数据规模较小时,可以采用将小规模数据合并为大规模数据的方式,进行返回 。
比如,需要返回两个char型数据时,可以通过返回一个short数据 , 高地位分别存储各自的值 。
除以上方法外,还可以不使用返回值的方式 , 而是通过函数参数传值,或者全局变量传值等方式,将要返回的值回传给主调函数 。
C语言如何返回值首先说明一下你的程序的问题与缺陷:
1: return语句 只能返回一个值,而不能写成 “return h,l;”
2:你在main()中定义了h,l,而在调用cal()时,又定义了h,l,这两个h,l是完全不同的两组 。即使你为cal()里的h,l赋值,那么返回到main()时,h,l仍然为0.
3:你在cal()里的scanf写的不好 。两个%d之间最好什么都没有,加了逗号,可能会在读取时,h,l赋值错误 。(具体请看我下面的程序)
下面是我的解法:
先问一下 , 你用的是TC2.0还是VC6.0?
如果是VC6.0,那么可以使用引用类型:
/*法一:使用引用*/
#includestdio.h
void cal(intch, intcl);/*声明ch,cl为引用类型*/
void main()
{
int h=0,l=0;
cal(h, l);/*这里将h,l传入cal()*/
printf("%d,%d",h,l);
【c语言函数的参数怎么返回 c语言函数返回值怎么使用】}
void cal(int ch, int cl)
{
scanf("%d%d",ch,cl);/*这里为ch,cl赋值*/
}
TC2.0中好像不支持引用类型 。我没测试 。
-------------------------
如果是TC2.0,那么可以使用指针:
/*法二:使用指针*/
#includestdio.h
void cal(int *ph, int *pl);/*这里将ph,pl声明为指针*/
void main()
{
int h=0,l=0;
cal(h, l);/*将变量h,l地址传过去 。*/
printf("%d,%d",h,l);
}
void cal(int *ph, int *pl)
{
scanf("%d%d",ph,pl);/*为ph,pl赋值*/
}
------------------
以上两种方法都可以解决你说的问题 。
有问题请追问 。
c语言函数如何返回多个值c语言函数只能最多有一个返回值 。我们以一个数据运算函数作为实例讲解:
使用指针返回额外数据:定义指针参数,将结果通过指针返回 。
如果有很多类型相同的数据,如何返回数组呢?c语言也只能借助指针返回数组 。
使用结构体返回:如果返回多个数据,并且各个数据类型都不相同 。那么只能通过结构体返回 。
使用结构体指针返回:直接返回结构体 , 程序执行效率会受到影响 。因为需要复制结构体数据,如果结构体数据比较大 , 复制操作会损耗程序性能 。
通过使用结构体指针,我们也可以返回多个数据结果 。
在c中,除了使用指针 , 通常使用引用返回多个数据 。与指针相比 , 使用引用时不用担心函数调用者传入不符合预期的指针 。
c语言怎么返回值?所谓返回值,就是人们想要知道函数或者程序所得到 的结果而设计的函数或者程序结束时给出一个值 。比如:我们编写一个加法函数,肯定想知道加完过后的结果是什么 , 那么我们就指定这个结果为该加法程序的返回值 。
关于返回值的返回:
1、函数调用语句本身代表其返回值:例如:fun(a);那么“fun(a)”就是这个返回值 。
2、可以把返回值存到对应类型的变量之中 。例如:int a=fun(b);
3、返回值是多种多样的,可以是各种各样的,int short char double 等等 , 还可以是指针或者结构体 。在数据结构的二叉树部分,某一个函数的返回值是一个带有两个指针的结构体 。
C语言中函数返回类型和函数返回值函数的返回值通过return语句来执行,即return后的变量或表达式的值,就为该函数的返回值(你可以根据需要自定义返回什么值) , 而返回值的类型是指该值你想要得到的类型,比如return
a;(a的类型,你在函数体里定义的是int
a;但根据需要,你要的是一个float型的返回值) , 于是,这样定义一个函数:
float
函数名(参数列表)
{
int
a;
函数体;
……
return
a;
}
这样,返回值a就变成了float型 。
C语言如何让一个函数返回多个值 在C语言中 , 一般情况下函数的返回值是通过函数中的return语句来实现的,每调用一次return语句只能从函数中返回一个值,下面我们就来看看C语言怎么让一个函数返回多个值!
工具/材料
C语言的编辑器
01
全局变量传递
这种方式算是最不科学的规范,打破了软件开发需要的闭环策略 , 但在基本语法上是支持的 , C语言里面最好少涉猎全局变量 , 使用出错的风险会提升很多 , 真要想使用建议还是用静态全局变量直接在变量的前面加上static修饰符 。
02
使用数组名或指针作为函数的形参
被调函数的行参是一个指针,然后在被调函数中返回第一个值,被调函数改变指针参数指向的值,这样主调函数相应的值就改变了,也就相当于返回了第二个值了 。这样就可以实现返回多个值!
03
结构体指针返回
结构体是C语言涉及数据结构的最直接的容器 , 通常在编程过程中实现一个功能模块在主函数里 , 我们可以定义一个结构体类型的变量,然后直接用函数返回值赋值就可以了 。
c语言函数的参数怎么返回的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言函数返回值怎么使用、c语言函数的参数怎么返回的信息别忘了在本站进行查找喔 。
推荐阅读
- 电商erp系统思路,电商erp怎么用
- cpuz下载,cpuz下载附加任务
- 变温羽绒服直播卖货,羽绒服直播怎么宣传
- vb.net项目介绍 vbnet ide
- 视频直播用什么工具最好,视频直播工具有哪些
- p50e怎样才能升级鸿蒙os3,华为p50pro怎么升级鸿蒙
- 如何衡量网络营销的效果,网络营销效果评价指标体系
- linux局部命令是 linux配置局部环境变量
- jym什么电视,jvxi电视