c语言函数只能最多有一个返回值。我们以一个数据运算函数作为实例讲解:
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的察哈尔右翼前网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
使用指针返回额外数据:定义指针参数,将结果通过指针返回。
如果有很多类型相同的数据,如何返回数组呢?c语言也只能借助指针返回数组。
使用结构体返回:如果返回多个数据,并且各个数据类型都不相同。那么只能通过结构体返回。
使用结构体指针返回:直接返回结构体,程序执行效率会受到影响。因为需要复制结构体数据,如果结构体数据比较大,复制操作会损耗程序性能。
通过使用结构体指针,我们也可以返回多个数据结果。
在c++中,除了使用指针,通常使用引用返回多个数据。与指针相比,使用引用时不用担心函数调用者传入不符合预期的指针。
所谓返回值,就是人们想要知道函数或者程序所得到 的结果而设计的函数或者程序结束时给出一个值。比如:我们编写一个加法函数,肯定想知道加完过后的结果是什么,那么我们就指定这个结果为该加法程序的返回值。
关于返回值的返回:
1、函数调用语句本身代表其返回值:例如:fun(a);那么“fun(a)”就是这个返回值。
2、可以把返回值存到对应类型的变量之中。例如:int a=fun(b);
3、返回值是多种多样的,可以是各种各样的,int short char double 等等,还可以是指针或者结构体。在数据结构的二叉树部分,某一个函数的返回值是一个带有两个指针的结构体。
return后接一个值。\r\n在调用这个函数的函数里面,调用它的时候希望获得一个值,如果不希望获得这个值的时候,用void声明就好。如果需要,比如说需要得到一个整形值\r\n就声明\r\nint func()\r\n在调用它的比如main里面\r\nfunc()的作用就可以相当于一个int型常数\r\n比如外面定义了\r\nint max(int a,int b)\r\n{\r\nreturn ab?a:b;\r\n}\r\n主函数里面是\r\nmain()\r\n{\r\nint A;\r\nA=max(1,2);\r\n}\r\n这时候就是通过max计算 12 则return 一个1 ,1
回答于 2022-11-16
C/C++不能直接返回一个数组。这是由于在C/C++中,数组不是一种类型,因此不能被直接返回。 在C/C++中,一般有两种方法来返回一个数组。 第一种方法: 返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数retArray,该函数可以返回指向具有10个char元素的数组例子如下:#include#includeint (*retArray())[10]{int (*a)[10];int i=0;/*动态开辟空间*/ a=calloc(10,sizeof(int));/*赋值*/for(i=0;i10;i++){(*a)[i]=i;}return a;}int main(){int (*b)[10]; /*函数返回指向数组的指针*/ b=retArray(); /*打印第一个元素*/ printf("%d/n",(*b)[0]); /*释放空间*/free(b);return 0;}第二种方法: 如果你不喜欢用指针的形式返回数组,那么可以采用返回一个结构的形式。这种形式相对较安全,可以避免忘记释放指针而造成内存泄露,也可以避免访问悬挂指针造成的错误。但缺点是由于结构是先拷贝再返回,因此如果结构较大时,会影响效率和占用较大内存。 例子如下:#includestruct tag{int a[10];}x,y;struct tag retArray(){int i=0;for(i=0;i10;i++) x.a[i]=i;return x;}int main(){struct tag y=retArray(); printf("%d/n",y.a[3]);return 0;}注意:(1)在返回指针时要切记要避免内存泄露和访问悬挂指针。 (2)很多人认为指针和数组等价的,这是错误的。int (*a)[10]和int b[10]两者是不能直接用a=b来赋值的。在数组和指针作为函数参数传递时,二者可以认为等价,这是因为数组会被转化为指针来传递。 (3)返回多维数组方法类似。
其实我们也可以把函数当作一个变量来看,既然是变量,那一定也可以有类型。还举最前面的例子,现在要求在main()函数里输入一个整数作为正方形的边长,在子函数里求正方形的面积,然后再在主函数里输出这个面积。