Home >Backend Development >C#.Net Tutorial >How do C/C++ functions return multiple values? (code example)
Sometimes we need to return multiple values from a function, unfortunately C/C does not allow this; but we can achieve this effect through some clever methods. The following article will introduce to you the C/C method of returning multiple values from functions. I hope it will be helpful to you. [Recommended video tutorials: C Language Tutorial, C Tutorial]
Method 1: By using Pointer:
When the function is called, pass the parameter with the address and use the pointer to change its value; in this way, the modified value becomes the original parameter.
Let’s see how to implement it through code examples.
Example: Input 2 numbers, compare the sizes and re-output
#include <stdio.h> void compare(int a, int b, int* add_great, int* add_small) { if (a > b) { // 变量a存储在指针变量*add_great所指向的地址中 // 变量b存储在指针变量*add_small所指向的地址中 *add_great = a; *add_small = b; } else { *add_great = b; *add_small = a; } } int main() { int great, small, x, y; printf("输入两个数字: \n"); scanf("%d%d", &x, &y); // 最后两个参数是通过给出内存位置的地址来传递的。 compare(x, y, &great, &small); printf("\n最大值为:%d,最小值为:%d", great, small); return 0; }
Output:
Method 2 : By using structure
Since structure is user defined data type; we can define a structure containing two integer variables and store larger and smaller values into these variables , and then use the value of that structure.
Example:
#include <stdio.h> struct greaterSmaller { int greater, smaller; }; typedef struct greaterSmaller Struct; Struct findGreaterSmaller(int a, int b) { Struct s; if (a > b) { s.greater = a; s.smaller = b; } else { s.greater = b; s.smaller = a; } return s; } int main() { int x, y; Struct result; printf("输入两个数字: \n"); scanf("%d%d", &x, &y); // 最后两个参数是通过给出内存位置的地址来传递的。 result = findGreaterSmaller(x, y); printf("\n最大值为:%d,最小值为:%d", result.greater, result.smaller); return 0; }
Output:
##Method 3: By using an array
When an array is passed as a parameter, its base address is passed to the function, so any changes made to the copy of the array will be changed to the original array.Note: This method will only work if the returned items are of the same type.
Example: Using an array to return multiple values will store the larger value at arr[0] and the smaller value at arr[1]#include <stdio.h> // 将较大的元素存储在arr[0]中 void findGreaterSmaller(int a, int b, int arr[]) { // Store the greater element at // 0th index of the array if (a > b) { arr[0] = a; arr[1] = b; } else { arr[0] = b; arr[1] = a; } } // Driver code 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]); return 0; }Output:
The above is the detailed content of How do C/C++ functions return multiple values? (code example). For more information, please follow other related articles on the PHP Chinese website!