C语言 函数返回多个值方法

本文介绍了在C语言中如何实现函数返回多个值,包括通过传入数组、使用指针以及利用结构体指针的方法。强调了数组作为参数时sizeof的注意事项,以及在不同情况下选择合适的方式传递数组长度。此外,还提到了使用单一指针或结构体指针来传递多个值的场景。
摘要由CSDN通过智能技术生成

于2023.4.24修改:改变语序使其通顺,丰富数组及指针方法的说明。

通常我们都会遇到会要求我们利用相关步骤进行运算,并且其结果可能涉及到多个值,此时,利用函数较为方便,但是对于C语言来说,要求单一出口原则,只能返回一个值(return方法),这时就无法实现。

通常我们可以通过如下方法进行多个值的返回

1.建立数组,并将数组作为参数传入函数中,注:传入函数时无法使用sizeof(A)/sizeof(A0)来获得数组的个数具体可看:数组名作为函数参数以及sizeof用法_小时候挺菜的博客-CSDN博客

 主要的意思是说,将数组作为参数传入函数之后,其符号(A这个符号就不在代表A这个数组,跳出该函数之后仍然可以通过A来访问这个数组)就变成了指向第一个位置A[0]的指针,通过sizeof(A)得到的不在是数组A的大小,而是指向第一个位置的指针的大小。因此想要得到数组的长度,必须要单独传入一个单独的参数代表长度如:LEN,

数组长度的传入主要看你的需求是什么,比如说:只是想遍历该数组,数组的大小为已知就完全可以不传入,当然你也可以传入之后进行判断访问界限,以防止访问越界的情况。对于需要传入的情况,目前我还没用到,猜想应该是数组的长度在不同时刻会发生变化的情况下,传入数组长度对于防止数组越界访问的好处比较明显。

2.通过单一的指针,当我们需要得到的返回值在2个或几个,无法通过函数单一的返回时,除了通过数组进行赋值之外,我们还可以直接将对应的值定义之后,在对其进行指针的定义然后将指针传入,利用指针对该值进行修改。此处只传入一个指针,当然可以传入多个指针,其实运用数组传入的也是指针,只是数组的指针指向的是数组的首地址,并可通过这个首地址访问到所有的数组元素。

int divide(int a,int b,int *result){//此处int *result要求传入一个int型指针,在调用时传入对应的地址就可
	int ret=1;
	if(b==0) ret=0;
	else{
		*result=a/b;
	}
	return ret;
} 

3.通过结构体的指针进行运算,这种方法适合于要赋值的对象有多个属性/值,又有多个对象,我们就可以建立一个结构体,然后通过结构体的指针来实现。然后在函数中对结构体成员进行赋值就可实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

友友友建

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值