상황에 따라 함수 인자의 개수가 다르게 할당되어도 처리 할 수 있게 해주는 것
<aside>
💡 가변 인자를 사용하기 위해서는 <stdarg.h>
헤더 파일이 필요하다
</aside>
반환값자료형 함수명(자료형 고정인자, ...)
가변 인자를 사용하기 위해서 두 종류의 인자가 필요하다.
<aside>
💡 가변 인자는 인자의 개수가 정해져 있지 않기 때문에 먼저 받게 되면 고정 인자를 어떤 것인지 파악할 수 없게 되므로, 항상 고정 인자
→ 가변 인자
순서로 받는 것을 원칙으로 한다.
</aside>
Name | Description |
---|---|
va_list |
가변 인자의 주소를 저장하기 위한 포인터 자료형(char * ) |
va_list
<aside> 💡 매크로 함수란?
#define
을 통해 정의되며, 컴파일하기 전 Pre-Processor
라고 하는 전처리기가 처리해준다. 매크로 함수는 단순 텍스트만 치환되는 방식으로 일반 함수와 다르다. 일반 함수보다 성능이 조금 더 좋지만, 단순히 치환만 해주는 것이라 의도하지 않는 에러나 값이 나올 수 있다
</aside>
Name | Description |
---|---|
va_start |
va_list 타입의 포인터를 첫 번째 가변 인자 주소로 초기화한다. |
va_arg |
va_list 타입의 포인터를 다음 인자 값으로 이동시키고, 현재 인자 값을 가져온다. |
va_copy |
가변 인자 리스트를 복사한다. |
va_end |
va_list 타입의 포인터를 NULL 로 초기화한다. |