1. 가변 인자란?


상황에 따라 함수 인자의 개수가 다르게 할당되어도 처리 할 수 있게 해주는 것

<aside> 💡 가변 인자를 사용하기 위해서는 <stdarg.h> 헤더 파일이 필요하다

</aside>

2. format


반환값자료형 함수명(자료형 고정인자, ...)

가변 인자를 사용하기 위해서 두 종류의 인자가 필요하다.

<aside> 💡 가변 인자는 인자의 개수가 정해져 있지 않기 때문에 먼저 받게 되면 고정 인자를 어떤 것인지 파악할 수 없게 되므로, 항상 고정 인자가변 인자 순서로 받는 것을 원칙으로 한다.

</aside>

3. 헤드 파일에 정의된 타입과 매크로 함수


1) 타입

Name Description
va_list 가변 인자의 주소를 저장하기 위한 포인터 자료형(char *)

2) 매크로 함수

<aside> 💡 매크로 함수란?

#define을 통해 정의되며, 컴파일하기 전 Pre-Processor라고 하는 전처리기가 처리해준다. 매크로 함수는 단순 텍스트만 치환되는 방식으로 일반 함수와 다르다. 일반 함수보다 성능이 조금 더 좋지만, 단순히 치환만 해주는 것이라 의도하지 않는 에러나 값이 나올 수 있다

매크로 함수와 인라인 함수

</aside>

Name Description
va_start va_list 타입의 포인터를 첫 번째 가변 인자 주소로 초기화한다.
va_arg va_list 타입의 포인터를 다음 인자 값으로 이동시키고, 현재 인자 값을 가져온다.
va_copy 가변 인자 리스트를 복사한다.
va_end va_list타입의 포인터를 NULL로 초기화한다.