stdarg.h
- C 표준 라이브러리의 헤더
- 가변인자를 취급하기 위한 함수들을 제공
int printf(const char *str, ...);
대표적 함수로는 printf가 있다.
가변인자는 …으로 표기.
하나이상의 이름을 갖는 변수를 인자로 받아야한다.
stdarg.h types
Name | Description |
---|---|
va_list | type for iteration arguments |
Name | Description |
---|---|
va_start | Start iterating arguments with a va_list |
va_arg | Retrieve and argument |
va_end | Free a va_list |
va_copy | Copy contents of one va_list to another |
Compatibility : C89
Example
void add(int argc, ...)
{
va_list ap; // 가변인자목록 포인터 ap 선언
int result = 0;
va_start(ap, argc); // ap의 초깃값 세팅
for (int i = 0; i < argc; i++)
result += va_arg(ap, int); // ap포인터에서 int 사이즈만큼 읽고 포인터 이동
va_end(ap); // ap값을 NULL로 초기화
printf("%d\n", result);
}
ap : Argument Pointer
va_arg : 특정 자료형의 크기만큼 값을 가져온다. (4byte = int / 8byte = double)
4byte이하의 자료형도 int로 설정해야한다.
댓글남기기