当我们在函数处理结束后,需要传一个以上的数据返回给主函数,那我们有几种方法可以使用呢,使用时又有哪些注意事项?让我们跟着正文一起来学习。
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语言基础:如何把函数处理结果的多个数据返回给主函数 的全部内容了,有什么想法欢迎评论区留言交流。希望对你有帮助!