인자와 반환값이 여러개인 함수

Prentice의 이미지

안녕하세요, C에서 인자가 여럿인 함수는 봤어도 반환값이 여럿인 함수는 못 본 것 같습니다.

C는 포인터와 배열까지 배우고 구조체는 배우다 말았는데요.. 이를 고려해주시고.. 반환값이 여럿인 함수는 어떻게 만드는지 예제를 보여주시면 감사하겠습니다.

kane의 이미지

C에 반환값이 여럿인 함수는 없죠. 흉내를 낼 뿐.

1. 구조체

struct A {
  ...
};
 
A func(void)
{
  struct A a;
  return a;
}

구조체 포인터 대신 구조체를 바로 넘긴 이유는 포인터를 쓰면 함수 밖에서 free를 해야하므로 개인적으로 선호하지 않기 때문입니다. 자주 쓰는 함수일 경우 성능이 저하될 수 있으므로 주의하세요.

2. 인자

int a;
double b;
 
void func(int *a, double *b)
{
  *a = 1;
  *b = 2.0;
}

반환값 대신 인자로 주고받는 방식입니다. 반환 받고 싶은 수만큼 인자 수를 늘리면 되지요. ㅎㅎ

3. 배열

int a[N];
 
void func(int *a)
{
  a[0] = 1;
  a[1] = 2;
  ...
}

같은 타입이 여러 개 필요하다면 배열을 바로 넘기면 되겠죠.