// test.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include< stdarg.h > /* 가변 인자. 가변인자란, 인자의 개수가 늘었다 줄었다 할수 있는 함수이다. 가장 잘 알고 있는 예로는 printf() 함수이다. 1. 함수의 원형 정의 int func(int, ...); 첫번째 인자 int는 고정이고, 다음 인자 ...이 가변인자이다. 2. 함수의 본체 작성. int func(int count, ...) { } 3. 헤더파일 포함. #include < stdarg.h > 가변 인자를 위한 매크로. void va_start(va_list list, last); - list를 초기화 한다. - 포인터를 맨 처음으로 톨리는 의미. - 만약 이 함수가 없다면 va_arg()를 이용하여 인자들을 다 사용했을 때 처음으로 되돌릴 방법이 없게 된다. type va_arg(va_list list, type); - 고정 인자를 제외한 나머지 인자들을 얻기 위하여 사용된다. void va_end(va_list list); - 가변인자의 사용을 끝낼 때 사용한다. 보통 사용하지 않는다. - 주의 사항. 1. va_start()를 사용하려면 적어도 하나 이상의 고정 인자가 있어야 한다. add(...); /// 에러 발생. */ /// 가변인자를 이용한 더하는 함수. int add(const int count, ...); int _tmain(int argc, _TCHAR* argv[]) { int sum = add(5, 1, 2, 3, 4, 5); std::cout << sum << std::endl; return 0; } int add(const int count, ...) { va_list list; int sum = 0; int i; va_start(list, count); for(i = 0; i < count; ++i) { sum += va_arg(list, int); } va_end(list); return sum; }머리로만 알고 있는것 같아서 한번 다시 책을 봤다..
이제 좀 외어도 될것 같은데... 머리에 안들어오네;
'[ Programming ]' 카테고리의 다른 글
변수 정의는 늦게 할수 있을 때 까지 (2) | 2009.06.14 |
---|---|
const (0) | 2009.05.14 |
void* (0) | 2009.05.05 |
값에 의한 전달 보다는 상수객체 참조자에 의한 전달 방식을 택하는 편이 대개 낫다. (2) | 2009.05.02 |
opengl로 만든 배경 그림 (0) | 2009.05.01 |