본문 바로가기
c언어

c언어 가변 매개 변수 함수 알아보기

by 개발자 L 2022. 12. 6.
반응형

c언어 가변 매개 변수 함수 알아보기

네 안녕하세요, 이번 포스팅에서는 c언어에서 사용하는 함수 중 하나인 가변 매개 변수 함수에 대하여 알아보도록 하겠습니다.

가변 매개 변수 함수를 사용을 할 줄 알게 되면 변수를 좀 더 유동적으로 쓸 수가 있게 됩니다.

그럼 지금부터 시작하도록 하겠습니다.

 

1. 가변 매개 변수 함수

가변 매개 변수 함수는 매개 변수의 개수를 호출할 때마다 달라지게 만드는 함수입니다.

기본적으로 함수의 매개 변수의 개수는 정해져 있습니다.

보통 변수 하나에 한 개의 매개 변수를 가집니다.

하지만 필요에 따라서 매개 변수의 개수를 유동적으로 조절을 해야 하는 상황이 올 수가 있습니다.

그럴 때 가변 매개 변수 함수를 이용을 하게 되면 함수가 호출이 될 때마다 매개 변수의 개수를 줄일 수도, 늘릴 수도 있으며,

가변적으로 개수를 조정할 수 있도록 도와줍니다.

그럼 이와 관련된 예제와 함께 제가 직접 보여드리도록 하겠습니다.

#include <stdio.h>
#include <stdarg.h>

int sum(int, ...);

int sum(int num, ...)
{
    int ans1 = 0;
    va_list argptr;

    va_start(argptr, num);

    for( ; num > 0; num--)
    {
        ans1 += va_arg(argptr, int);
    }

    va_end(argptr);
    return(ans1);
}

int main()
{
    int ans = sum(4, 4, 3, 2, 1);
    printf("합은 %d입니다.\n", ans);

    return 0;
}
반응형

 

이렇게 한 번 작성을 해봤습니다.

여기에서 처음 보는 헤더파일과 변수명들이 있을 건데,

<stdarg.h>는 c언어에서 제공해주는 표준 라이브러리의 일부인데,

이를 쓰게 되면 변수에 저장이 되는 인자 수를 제한 없이 사용을 하게 해 줍니다.

그래서 가변적으로 계속 개수를 바꿀 수가 있는 겁니다.

그리고 이 가변 매개 변수 함수를 실행을 시키기 위해서 쓰는 함수는 va_start()이고,

여기에서 var_end() 함수, 다시 말해서 가변 매개 변수 함수가 종료됨을 알리는 함수가 종료되기 전까지 va_arg()라는 함수를 호출하여 루프를 돌립니다.

va_arg() 함수는 위에 보이는 var_list라는 변수가 전달하는 매개 변수를 반환을 해주는 함수입니다.

그리고 va_arg() 함수가 매개 변수의 개수를 가변적으로 입력을 받아 반환을 하기 위해서는 argptr이라는 명령어를 꼭 va_list 변수 옆에 꼭 써야 합니다.

이는 va_arg() 함수가 가지는 파라미터, 다시 말해서 매개 변수를 고무줄처럼 유동적이고 가변적으로 늘였다가 줄였다가 할 수 있도록 도와주는 역할을 하기 때문입니다.

그리고 여기에서 가변 매개 변수 함수의 원형은 '...'으로 씁니다.

그럼 결과를 한 번 확인을 해보도록 하겠습니다.

합은 10입니다.

결과 역시 잘 나온 것을 볼 수가 있습니다.

 

여기까지 가변 매개 변수 함수에 대하여 알아보았는데요,

다음 포스팅에서는 순환 호출을 하는 방법에 대하여 알아보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~

반응형

댓글