Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C/C++에서 정수 함수 포인터 배열의 포인터를 반환하는 함수 선언 방법

개요

이 글에서는 두 개의 값을 입력받아 서로 비교한 뒤, 더 큰 값의 메모리 주소를 반환하는 함수 포인터를 구현하는 방법을 알아봅니다. 함수 포인터는 상황에 따라 서로 다른 함수의 주소를 전달할 수 있게 해 주므로 코드의 유연성과 추상화 수준을 높여 줍니다. 또한 실행 시간(runtime)의 값에 따라 실행할 함수를 간단하게 선택할 수 있어, 복잡한 조건문 없이도 코드를 깔끔하게 단순화할 수 있습니다.

big() 함수의 동작 원리

프로그램은 두 개의 정수를 참조(reference) 형태로 big() 함수에 전달합니다. big() 함수는 전달받은 두 정수 값을 비교한 후, 더 큰 값이 저장된 메모리 주소를 반환합니다. 반환값은 정수형 포인터이며, 호출부에서는 이 포인터를 역참조하여 더 큰 값을 출력할 수 있습니다.

예시

  • 입력: 7 13 → 출력: 더 큰 값은 13입니다.
  • 입력: 8 6 → 출력: 더 큰 값은 8입니다.

설명: 두 개의 정수 값을 비교한 뒤, 포인터가 두 값 중 더 큰 값의 메모리 주소를 반환하여 결과를 출력합니다.

구현 접근 방법

  • 정수형 포인터(예: int *c)를 선언합니다.
  • 두 개의 정수 변수를 초기화합니다.
  • 두 값을 입력받습니다.
  • 주어진 두 값을 비교합니다.
  • 마지막으로 포인터 *c가 더 큰 값의 주소를 반환하도록 합니다.

알고리즘

시작
STEP 1 → 함수를 생성하고 인수를 전달합니다.
    int *big(int &, int &)
종료
STEP 2 → main() 함수에서 두 값을 입력·출력하고 포인터 *c를 초기화합니다.
    int a, b, *c
    c = big(a, b) 호출
    c 출력
종료
STEP 3 → 전달된 두 정수 값을 비교하고, 포인터 c를 통해 더 큰 값의 메모리 주소를 반환합니다.
    if(x > y)
        return(&x)
    else
        return(&y)
    종료
정지

예제 코드

#include <iostream>
using namespace std;

int *big(int &x, int &y);

int main() {
    int a = 4, b = 7;
    int *c;
    c = big(a, b);
    cout << "더 큰 값은 " << *c << "\n";
    return 0;
}

int *big(int &x, int &y) {
    if (x > y)
        return (&x);
    else
        return (&y);
}

실행 결과

위 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.

더 큰 값은 7

입력되는 두 값에 따라 비교 결과가 달라지며, 항상 더 큰 값의 메모리 주소가 포인터를 통해 반환됩니다. 이처럼 함수 포인터와 참조 전달을 함께 활용하면, 값을 복사하지 않으면서도 효율적으로 비교 연산을 수행할 수 있습니다.