C/C++ 함수는 어떻게 여러 값을 반환합니까? (코드 예)

青灯夜游
풀어 주다: 2019-03-11 10:27:22
원래의
30367명이 탐색했습니다.

때때로 함수에서 여러 값을 반환해야 하는 경우가 있는데, 불행히도 C/C++에서는 이를 허용하지 않지만 몇 가지 영리한 방법을 사용하면 이 효과를 얻을 수 있습니다. 다음 글에서는 C/C++의 함수에서 여러 값을 반환하는 방법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다. [추천 동영상 튜토리얼: C Language Tutorial, C++ Tutorial]

C/C++ 함수는 어떻게 여러 값을 반환합니까? (코드 예)

방법 1: 포인터 사용:

함수를 호출할 때 주소가 포함된 매개변수를 전달하고 포인터를 사용하여 값을 변경합니다. ; 그러면 수정된 값이 원래 매개변수가 됩니다.

코드 예시를 통해 어떻게 구현하는지 살펴보겠습니다.

예: 2개의 숫자를 입력하고 크기를 비교한 후 다시 출력합니다.

#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; 
}
로그인 후 복사

출력:

C/C++ 함수는 어떻게 여러 값을 반환합니까? (코드 예)

방법 2: 구조를 사용하여

구조는 사용자 정의 데이터 유형이므로, 두 개의 정수 변수를 포함하는 A 구조를 정의하고 더 큰 값과 더 작은 값을 이러한 변수에 저장한 다음 구조의 값을 사용할 수 있습니다.

예:

#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; 
}
로그인 후 복사

출력:

C/C++ 함수는 어떻게 여러 값을 반환합니까? (코드 예)

방법 3: 배열 사용

배열이 매개변수로 전달되면 해당 기본 주소가 함수에 전달됩니다. 배열은 변경 사항이 있으면 원래 배열로 변경됩니다.

참고: 이 방법은 반품된 품목이 동일한 유형인 경우에만 작동합니다.

예: 배열을 사용하여 여러 값을 반환하면 arr[0]에 더 큰 값이 저장되고 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; 
}
로그인 후 복사

출력:

C/C++ 함수는 어떻게 여러 값을 반환합니까? (코드 예)

그렇습니다. 모든 분들의 공부에 도움이 되는 글이 되었으면 좋겠습니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! !

위 내용은 C/C++ 함수는 어떻게 여러 값을 반환합니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
c c++
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿