마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

프로그래밍/C언어와 친구들

C언어 포인터를 이용하여 함수에서 여러 개의 값 반환하기

동동매니저 2019. 2. 17. 13:04

[C언어 함수에서 여러 개의 값 반환하기] : 포인터를 이용한 방법


일반적으로 C언어의 return 문은 하나의 값만 반환할 수 있는데요,

함수에 포인터를 넘겨줌으로써 여러 개의 값을 반환하는 예제를 들어보겠습니다.

(scanf 함수도 이를 이용한 방법입니다.)

가장 기본적인 두 수의 합과 차를 동시에 반환하는 함수를 구현해보았습니다.

기본적으로 C언어의 함수는 '값에 의한 호출' (Call by Value) 방식인데요,

'참조에 의한 호출' (Call by Reference) 방식을 구현하기 위해서 포인터를 사용했습니다.

참고로, 함수에 배열을 전달하는 경우에는 기본적으로 '참조에 의한 호출' 방식을 사용합니다.

#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;
	printf("2개의 정수 입력 : ");
	scanf("%d %d", &a, &b);
	sum_minus(a, b, &sum, &minus); // 결과 값이 저장될 변수의 포인터를 전달
	printf("합 : %d, 차: %d\n", sum, minus);
	return 0;
}