본문 바로가기
▶ 프로그래밍 [Programming]/▷ C 언어 [C Language]

[C 언어] 가변 인자를 이용한 사용자 정의 함수 만들기 (va_list, va_arg, va_start, va_end)

by (๑′ᴗ‵๑) 2021. 11. 25.
반응형

 

 

안녕하세요,

 

오늘은 가변 인자를 이용한 사용자 정의 함수를 만드는 방법과 사용 예시에 대해 포스팅 해보도록 하겠습니다.

 

 

가변 인자

 

가변 인자를 이용하면 사용자가 입력 파라미터에 구애없이 사용자 정의 함수를 만들 수 있는 장점이 있습니다.

 

가변 인자를 이용하기 위해선  va_list, va_arg, va_start, va_end, ... 등의 타입이 필요한데요, 이는 C에서는 stdarg.h, C++에서는 cstdarg에 정의되어있습니다.

 

C 언어를 이용해 가변 인자를 이용한 사용자 정의 함수 예시를 보여드리겠습니다.

 

반응형

 

사용자 정의 함수 예시

 

총 입력 받은 파라미터들의 개수를 알기 위해 첫 번째 인자에는 파라미터 총 개수를 입력하도록 했습니다.

 

예시

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

int user_sum(int, ...);
int main()
{
    // sum(total cnt, a, b, ...);
    printf("1 + 2 = %d\n"user_sum(2, 1, 2));
    printf("1 + 2 + 3 + 4 + 5 = %d\n"user_sum(5, 1, 2, 3, 4, 5));
}

int user_sum(int args, ...)
{
    int total_sum = 0;
    int var;

    // stack pointer for the variadic argument list
    va_list list;

    // Set the pointer of the first variadic argument
    va_start(list, args);

    // Total variadic argument count is saved in args
    for (int i = 0; i < args; i++)
    {
        // Get each variadic argument from the list
        var = va_arg(list, int);
        total_sum += var;
    }

    // Initialize the stack pointer as NULL
    va_end(list);

    return total_sum;
}

 

결과

1 + 2 = 3
1 + 2 + 3 + 4 + 5 = 15

 

지금까지 가변 인자를 이용한 사용자 정의 함수를 만드는 방법과 사용 예시였습니다.

 

읽어주셔서 감사합니다.

 

반응형

댓글