[C++] 가변인수함수

[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

이 글을 공유하기

댓글

Designed by JB FACTORY