프로그래밍 공부
작성일
2023. 4. 20. 01:14
작성자
WDmil
728x90

매개 변수 개수가 고정되지 않고 호출할 때 마다 인자의 개수가 달라질 수 있는 경우를 말한다.

 

가변인자를 사용하려면 C언어에서는 stdarg.h 라이브러리를 C++에서는 cstdarg 라이브러리 를 사용한다.

 

이 라이브러리 를 사용하면 va_list, va-start, va_arg, va_copy, va_end 등의 매크로 함수를 이용하여 가변인자 를 처리할 수 있다.

 

대표적인 예시는 printf() 함수가 있는데, printf() 함수는 매개변수의 개수가 고정되어있지않으며, 호출할 때 마다 인자의 개수와 형식이 달라질 수 있다는걸 알 것이다. 따라서 printf()함수는 가변인자를 사용하여 처리하게된다.

 

다음과 같은 함수를 예시로 살펴보자.

위 함수를 살펴보면, print_number 함수를 선언하고, int num, ... 으로 매개변수 를 받아오는 걸 볼 수 있다.

그 후, va_list args 를 선언하고, va_start(args, num) 을 통해 시작값과 끝 값을 사용하여, 입력된 모든 값을 출력하는 걸 확인할 수 있을것이다.

 

즉, 가변인자 는 함수가 가질 수 있는 최대개수의 변수를 따로 지정하지 않아도 배열값을 활용하여 형변환을 통해 받아올 수 있다는걸 알 수 있다.

728x90