[C++] 가변인수함수
- C++/C++ 문법
- 2018. 5. 10. 13:47
[C++] 가변 인수 함수
- 가변 인수 함수란 말 그대로 인수의 개수가 고정이 아니라 가변적이라는 이야기 입니다. 대표적으로 가변 인수 함수의 예로는 printf() 함수가 있습니다.
printf("정수 %d", i);
printf("정수 %d %d", i, j);
printf("정수 %d %d %d", i,j,k);
이와 같이 인수가 고정적이지 않고 가변적으로 개발자가 원하는 인수 만큼 사용할 수 있습니다.
그러면 이러한 가변 인수 함수를 어떻게 구현하는지에 대해서 알아보도록 합시다.
가변 인수 함수의 구조는 다음과 같습니다.
void VarFunc(int fix,...)
{
va_list ap;
va_start(ap, fix);
while(모든 인수를 다 읽을 때까지)
{
va_arg(ap,인수타입);
}
va_end(ap);
}
여기서 함수의 이름이나 원형, 고정 인수의 개수 등은 개발자가 원하는 대로 작성이 가능합니다. 위에서 va_list, va_start 등 처음보는 매크로 함수들이 등장하는데 각각 무슨 역할을 알아봅시다.
va_list
- 현재 읽고 있는 번지를 기억하기 위해 포인터 변수가 하나 필요한데 그때 포인터 변수를 선언하기 위한 매크로 함수 입니다.
va_start(va_list 변수, 마지막 고정 인수)
- 가변 인수를 읽기 위한 준비를 하는 명령입니다.
va_arg(va_list 변수, 인수타입)
- 가변 인수들을 실제로 읽는 명령입니다.
그러면 실제 위와 같은 내용을 이용하여 간단한 가변 인수 함수를 하나 만들어 보겠습니다.
이와 같이 가변 인수 함수를 개발자가 원하는 대로 구현을 할 수 있습니다.
728x90
'C++ > C++ 문법' 카테고리의 다른 글
[C++] STL map 사용 법 (0) | 2018.06.20 |
---|---|
C++ csv 파일 읽기 및 파싱 방법 (4) | 2018.05.28 |
[C++]참조자의 이해 (0) | 2018.05.10 |
[C++] 자료형 bool 형식 (0) | 2018.05.09 |
C++ 인-라인 함수 (0) | 2018.05.04 |
이 글을 공유하기