Home  >  Article  >  Backend Development  >  How do C/C++ functions return multiple values? (code example)

How do C/C++ functions return multiple values? (code example)

青灯夜游
青灯夜游Original
2019-03-11 10:27:2230358browse

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]

How do C/C++ functions return multiple values? (code example)

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:

How do C/C++ functions return multiple values? (code example)

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:

How do C/C++ functions return multiple values? (code example)

##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:


How do C/C++ functions return multiple values? (code example)

The above is the entire content of this article, I hope it will be helpful to everyone's study. For more exciting content, you can pay attention to the relevant tutorial columns of the PHP Chinese website! ! !

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn