C언어) 가변 인자 함수

Lapis0875·2022년 12월 12일
0

c언어

목록 보기
11/21
post-thumbnail

😔 함수 인자가 고정된게 마음에 들지 않아요!

가령 정수들의 합을 계산하는 함수가 있는데, 각 정수를 인자로 받고 있어요.

int sum(int a, int b, int c);

근데 내가 인자를 2개만 주고 싶고, 5개도 주고 싶어요. 어짜피 인자들의 합을 계산하는건데, 굳이 고정적일 필요가 있냐는 이야기에요.

🤔 가변 인자 함수?

이를 위해서, c언어에서는 가변 인자 함수를 지원해요. 실제로 printf, scanf 같은 경우 변환 명세에 따라 인자의 개수가 다른데, 이는 가변 인자를 사용해 구현되었어요. 앞서 이야기했던 정수의 합을 계산하는 함수를 가변인자로 만들어볼게요.

구현

#include <stdio.h>
#include <stdarg.h>		// 가변 인자 함수를 만들기 위해 필요해요.

int sum(int cnt, ...);

int main(void)
{
    printf("1 + 2 + 3 = %d\n", sum(3, 1, 2, 3));
    printf("1 + 2 + 3 + 4 + 5 = %d\n", sum(5, 1, 2, 3, 4, 5));
    printf("1 = %d\n", sum(1, 1));
    return 0;
}

int sum(int cnt, ...)
{
    va_list ap;
    int total = 0;
    va_start(ap, cnt);
    for (int i = 0; i < cnt; i++)
    {
        total += va_arg(ap, int);
    }
    va_end(ap);
    return total;
}
profile
새내기 대학생 개발자에요 :D

0개의 댓글