C언어 포인터 활용 : 함수에서 여러 값 받기

C언어의 return 문은 일반적으로 하나의 값만 반환할 수 있다. 함수에 포인터를 넘겨주면 여러 값을 받을 수도 있다. 대표적으로 입출력에 자주 사용되는 scanf 함수를 예로 들 수 있다.

포인터를 넘겨주는 함수 예제

기본적인 예제로 두 수의 합과 차를 동시에 반환하는 함수를 구현해보겠다. 기본적으로 C언어의 함수는 ‘값에 의한 호출’ (Call by Value) 방식이다. 배열을 전달하는 경우에는 ‘참조에 의한 호출’ (Call by Reference) 방식이 사용된다.

C
#include <stdio.h>

void sum_minus(int a, int b, int *sum, int *minus) {
    *sum = a + b;
    *minus = a - b;
}

int main(void) {
    int a, b;
    int sum, minus;
    scanf("%d %d", &a, &b);
    sum_minus(a, b, &sum, &minus);
    cprintf("Sum: %d, Subtract: %d\n", sum, minus);
    return 0;
}

위 예제에서는 함수에 간접 참조 연산자(*)가 사용되었고, 결과 값이 저장될 변수의 주소를 전달함으로써 여러 값을 받을 수 있도록 하였다.

댓글 남기기