최대 1 분 소요


  • 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로 설정해야한다.

댓글남기기