点击上方公众号名称关注,获得更多内容
✎ 编 者 悟 语想起青春追寻的昨天,你也是曾经追风的少年。
文 章 导 读
今天给小伙伴们介绍下,用return之外的方式返回多个值的3种方式,要多多利用哈,希望对小伙伴们有所帮助哈,!
1函数返回数据的方式1)关于return
函数返回值最常用的方式就是return了,但它一次只能返回一个值,你可以通过判断让它返回不同的值,但逆转不了它只能返回一个值的宿命。
2)可以返回多个数据的方式(3种)
① 函数指针参数指向不同的地址,调用时传入要返回的值。
② 返回结构,即通过结构对要返回的值封装一下。
③ 函数接受函数指针,传入需要的数据,通过结构返回。
其中③ = ① + ②。
2实例代码RetVal.c的代码如下。
#include
#include
#define PI 3.14
// t通用结构,c为周长,s为面积
struct csRect
{
float c,s;
}rect;
// 函数声明
Circle(float r, float *c, float *s);
struct csRect Rectangular(float lrect, float wrect);
Square(float edge,struct csRect *cp);
int main(int argc, char *argv[])
{
float cCir,sCir;
struct csRect square;
Circle(1,&cCir,&sCir); // 传入要返回的地址
printf("1) 函数指针参数指向不同的地址,调用时传入要返回的值,测试结果如下:\n");
printf("\n\t圆的周长为:%f\n\t圆的面积为:%f\n",cCir,sCir);
struct csRect result = Rectangular(3,4); // 传入数值
printf("\n2) 返回结构,即通过结构对要返回的值封装一下,测试结果如下:\n");
printf("\n\t长方形的周长为:%f\n\t长方形的面积为:%f\n",result.c,result.s);
Square(3,&square);
printf("\n3) 函数接受函数指针,传入需要的数据,通过结构返回,测试结果如下:\n");
printf("\n\t正方形的周长为:%f\n\t正方形的面积为:%f\n",square.c,square.s);
return 0;
}
// 圆
Circle(float r, float *c, float *s)
{
*c = 2 * PI * r; // 周长
*s = PI * r * r; // 面积
}
// 长方形
struct csRect Rectangular(float l, float w)
{
struct csRect ret;
ret.c= 2 * (l + w); // 周长
ret.s = l * w; // 面积
return ret;
}
// 正方形
Square(float edge,struct csRect *cp)
{
cp->c= 4 * edge; // 周长
cp->s= edge * edge; // 面积
}
函数很简单,大家要注意的是形式,多注意函数内部和调用方式!
上面程序中打印信息的变量就是你需要的返回值,因为没有实际的应用,所以就直接打印输出了。
需要多个返回值设置相应数量的参量就可以了。
运行结果如下。
总结
今天给小伙伴们介绍下,用return之外的方式返回多个值的3种方式。后面还会有C语言相关的内容,大家敬请期待哈,。
有问题可以后台留言交流,公众号18年后新申请的,文章后不支持留言功能的。
相关文章:
原来数组还可以这么玩(宏把数组玩坏了)
利用结构数组和函数指针查找法调用函数
用掩码数组和枚举增强C代码的可读性
编程意识篇——用结构存储数据以减少函数二次调用,能替代return返回值吗
malloc为什么不能在函数体外给全局变量分配内存
用结构体和指针模拟配置芯片引脚输出高低电平
进化论——从函数指针到被结构封装的函数指针及参数的应用举例
专辑推荐:
Python技能专辑
C语言专辑
IDE调试专辑
软件推荐专辑
软实力专辑
Linux专辑
扫码关注我们
❖ Game Over!