C语言基础:如何把函数处理结果的多个数据返回给主函数

       当我们在函数处理结束后,需要传一个以上的数据返回给主函数,那我们有几种方法可以使用呢,使用时又有哪些注意事项?让我们跟着正文一起来学习。


 1、形参用数组

       将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去。形参使用数组,在主函数中我们就可以得到返回的多个值。

#include<stdio.h>
void test(int arr[])
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		arr[i] = i + 1;
	}
}
int main()
{
	int arr[10];
	test(arr); 
	int i = 0;
	
	//根据打印结果我们可以知道,test函数成功将值带回主函数了
	for (i = 0; i < 10; i++)
	{
		printf(" %d ", arr[i]);
	}
	return 0;
}

       我们在test函数中将数组初始化,由打印结果可知,我们成功将函数中的多个数据返回给了主函数。


2、形参用指针

       形参如果用指针,最终指向的是外部的实参,在函数中对指针指向内容进行修改,改变的就是外部的实参。所以可以通过修改指针指向内容,从而将多个数据返回给主函数。

#include<stdio.h>
void test(int* px, int* py, int* pz)
{
	*px = 5;
	*py = 2;
	*pz = 1;
}
int main()
{
	int x = 0;
	int y = 0;
	int z = 0;

	//根据打印结果我们可以知道,test函数成功将值带回主函数了
	test(&x, &y, &z);
	printf("%d %d %d \n", x, y, z); 
	return 0;
}

       我们在test函数中修改指针指向的值,由打印结果可知,我们成功将函数中的多个数据返回给了主函数。


3、用全局变量

       全局变量不受函数的结束而结束,在函数中改变全局变量,主函数中可以看到改变之后的结果。我们在test函数中修改内容,也可以将多个数据返回给主函数。

#include<stdio.h>
int x = 0;
int y = 0;
int z = 0;

void test()
{
	x = 5;
	y = 2;
	z = 1;
}
int main()
{
	//根据打印结果我们可以知道,test函数成功将值带回主函数了
	test(&x, &y, &z);
	printf("%d %d %d \n", x, y, z);
	return 0;
}

       由打印结果也可以看出我们成功实现了多个数据的传输。

注意: 1、全局变量的好处在于让我们每一个函数都能共享他的数据
            2、但是坏处在于数据容易被修改,数据不安全
            3、全局变量可以给各个函数直接使用,所以全局变量的控制就比较难,我们建议在自己的代码中尽量渐少对全局变量的使用


错误做法:return 这几个数据

       在实现返回多个数据时,还会有一个常见的误区,想要通过return 多个数来返回多个数据。 这个做法是错误的!

       首先一个函数只能返回一个结果,而且如果return多个数,本质上return 后的多个数组成的是一个逗号表达式。逗号表达式会依次计算,整个表达式的结果是最后一个表达式的结果,所以只返回了一个值。

       由打印结果可看出,test函数返回的是最后一个表达式 z 的值,且x,y,z 的值没有被修改,还是0 ,所以用return多个数的方式来返回多个数据是不可行的。


       以上就是  C语言基础:如何把函数处理结果的多个数据返回给主函数  的全部内容了,有什么想法欢迎评论区留言交流。希望对你有帮助!

  • 13
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值