大家好,今天小编关注到一个比较有意思的话题,就是关于c语言函数返回多个值的问题,于是小编就整理了2个相关介绍c语言函数返回多个值的解答,让我们一起看看吧。
c语言一个函数能出现两个return吗?
可以的,但最终只有一个return返回值。
C语言一个函数可以包含一个或多个return,如果是void函数,还可以不写return。在一个函数中不同位置可以编写return语句,表示函数的结束并返回到调用点,有时我们需要根据不同的条件返回不同的值,此时就会在不同的if语句中编写return语句,就会出现一个函数包含多个return的情况。
不能。
函数的返回值只能有一个,所以程序执行到第一个return就直接跳出,没有执行return d;可以使用指针,a,b为入口参数,c,d为出口参数,这样就可以解决多个返回值的问题,希望能帮到你。
#include <stdio.h>
void f(int a,int b,int *c,int *d)
{
*c = a + b;
*d = a - b;
}
int main()
{
C语言中的函数为什么只能有一个返回值输出?怎么实现多个值输出?
C语言函数只能有一个输出,这是受当时编程方法的影响。是一个历史问题。在C语言发明前,大多数人还在用汇编语言的时候,那真的是百花齐放,啥样都有。导致编程效率底下,bug层出,维护困难。所以有个大牛E.W.Dijikstra提出了一个革命性的思想,结构化程序设计。在这个思想下提出了编程函数化的理念。基于此出现了一系列的语言。C语言是其中一个发展最好的。就好像一个人生了一堆娃,其中一个当了总统。但总统也来自同一个基因。关于C语言为何脱颖而出发展壮大不是我们这里讨论的问题,就不深入讲了(讲下去可以写本书)。
我们就讲下为何函数为何只有一个输出。其实都源于数学。数学的函数可以有多个变量,但只有一个结果。这其实是为了数学简单化。编程也是一样。这样的编程结果明确,没有乱七八糟的网状关系。所以现在函数式编程还是一个很火的理念。
但是,你不得不承认,现实问题还是有很多不止一个输出结果的情况。好在c语言还留了一个后门。叫指针。通过指针操作你可以输出多个结果。这是C语言发展壮大的一个原因。也是现在C语言为人诟病的关键点。
现代编程语言大多抛弃了指针操作,但保留了多结果输出。不过函数式编程的理念也没有丢。也就是函数只有一个返回值,但这个返回值可以包含多个结果。
这是典型的C语言中函数模块中的返回值问题,算是常见的语法细节,很多人觉得C语言已经过时了,只能代表着这类人还不算是真正的技术人员,在嵌入式领域C语言依然充当着非常重要的角色,C语言在很多领域还是首选编程语言,主要在强调性能以及靠近硬件的编程中还是发挥着极其重要的作用,C语言常见的难点屈指可数,但组合起来使用难度会提升许多。
常见的C语言难点有指针,结构体,函数,递归,回调,数组等等,看起来没多少东西,每个概念都能延伸很多功能点,今天的题目其实就是函数模块中的返回值的问题,面向对象编程的基本单元就属于函数,函数包括参数输入,具体功能实现,最后是结果的输出,也就是这个题目的返回值,在正常情况下函数的返回值只有一个,但在实际编程中需要用到多个,在设计时候还是归结成一类,如果类型相近可以弄成数组方式,如果类型不太一致直接放在结构体中执行。
现在从语法规则出发列举几个实现多个值返回例子:
1.全局变量传递
这种方式算是最不科学的规范,打破了软件开发需要的闭环策略,但在基本语法上是支持的,C语言里面最好少涉猎全局变量,使用出错的风险会提升很多,真要想使用建议还是用静态全局变量直接在变量的前面加上static修饰符。
2.结构体指针返回
结构体是C语言涉及数据结构的最直接的容器,通常在编程过程中实现一个功能模块,模块中的数据通常都会放在一个结构体中,在在功能函数中对结构体中的数值进行操作,因为结构体中可以放足够多的变量,如果函数返回值是个指针的话,就能把整个结构体里面的内容返回出来,同样能够达到返回多个数值的作用,这种在平常的编程过程中用的最多,C语言中使用最频繁的关键点就是指针了,但也是很多初学者最不好理解的知识点。
C语言中如果[_a***_]了结构体和指针基本上C语言将近一半的知识点就拿下了,当然直接返回结构体指针的方式属于非常常见的编程方式。
3.数组指针返回
C语言的函数还真的只能有一个值返回,因为大部分情况下,我们不需要返回多个值,C语言规范中为了尽量避免程序设计的难度,就没有考虑函数的多个值的返回情况。即使有返回多个值的需求,也可以通过其它方式实现。我总结一下,大概有四种方式
一. 传参数
通过指针或引用的方式可以在函数中改变传入参数的值,例如在做两个数的时,如果用指针方式,可以像下面这样写
如果***用引用的方式,稍微改一下就好了,如下
这样a和b其实可以看成是要返回的两个值,这种通过指针和引用的方式一般是用得最多的多值返回方式。
二. 返回元组
当然我们可以以数组的形式值返回,即使类型不一样也没有关系,比如要返回三种类型的值,都将它们存入到一个string类型的数组里面,将每一个类型的值当成字符串存入,在使用时解析并转化一下类型就好了。
其实在C++11中就有tuple可以满足这个需求了,tuple中可以放不同类型的元素,并且在使用时也有对应方法获取变量值。例如
到此,以上就是小编对于c语言函数返回多个值的问题就介绍到这了,希望介绍关于c语言函数返回多个值的2点解答对大家有用。