介绍
小编给大家分享一下C/c++函数返回多个值的方法,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
有时我们需要从通过一个函数返回多个值,不幸的是C/c++不允许这样做;但我们可以通过一些巧妙的方法来达到这种效果。
<强> 强>
在函数调用时,传递带有地址的参数,并使用指针更改其值,这样,修改后的值就会变成原始参数。
下面通过代码示例来看看如何实现。
示例:输入两个数,比较大小后重新输出
# include & lt; stdio.h> 空白比较(int, int, int * add_great, int * add_small) { 如果(在b) {//变量一个存储在指针变量* add_great所指向的地址中//变量b存储在指针变量* add_small所指向的地址中 * add_great=一个; * add_small=b; } 其他{ * add_great=b; * add_small=一个; } } int main () { int大,小,x, y; printf(“输入两个数字:\ n"); scanf (“% d % d", x,, y);//最后两个参数是通过给出内存位置的地址来传递的。 比较(x, y,,好,,小); printf (“\ n最大值为:% d,最小值为:% d", 大、小); 返回0; }
输出:
因为结构是用户定义的数据类型;我们可以定义一个包含两个整数变量的结构,并将更大和更小的值存储到这些变量中,然后使用该结构的值。
示例:
# include & lt; stdio.h> struct greaterSmaller { int更小; }; typedef struct greaterSmaller结构; Struct findGreaterSmaller (int, int b) { 结构体; 如果(在b) { 年代。大=一个; 年代。?b; } 其他{ 年代。大=b; 年代。?一个; } 返回年代; } int main () { int x, y; 结构体的结果; printf(“输入两个数字:\ n"); scanf (“% d % d", x,, y);//最后两个参数是通过给出内存位置的地址来传递的。 结果=findGreaterSmaller (x, y); printf (“\ n最大值为:% d,最小值为:% d", 结果。大,result.smaller); 返回0; }
输出:
当一个数组作为参数传递时,它的基地址将传递给该函数,因此无论对数组副本所做的任何更改,它都会更改为原始数组。
<强>注:强>该方法仅当返回的项具有相同类型时才可以工作。
示例:使用数组返回多个值,会在arr[0]处存储更大的值,在加勒比海盗[1]处存储更小的值
# include & lt; stdio.h>//将较大的元素存储在arr[0]中 空白findGreaterSmaller (int, int b, int[]的arr) {//存储更大的元素//第0个数组的索引 如果(在b) { 加勒比海盗[0]=一个; arr [1]=b; } 其他{ arr [0]=b; 加勒比海盗[1]=一个; } }//驱动程序代码 int main () { int x, y; int arr [2]; printf(“输入两个数字:\ n"); scanf (“% d % d", x,, y); findGreaterSmaller (x, y, arr); printf (“\ n最大值为:% d,最小值为:% d", arr [0], arr [1]); 返回0; }
输出:
看完了这篇文章,相信你对C/c++函数返回多个值的方法有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!