Programming/C

가변인자함수

알 수 없는 사용자 2014. 5. 23. 19:19
반응형

c언어에서 함수는 정해진 타입, 정해진 개수의 파라메터를 전달받는다. 하지만 필요에 따라 다양한 개수의 파라메터를 받을 필요가 생기는데 이때 사용하는 것이 가변인자함수이다. 우리가 가장 많이 사용하는 함수인 printf도 가변인자 함수로 이루어져있다.

 

printf("hello world\n"); // 인자 1개 전달

printf("%s\n", "hello world"); // 인자 2개 전달

 

사용법은 다소 복잡하다. <stdarg.h>를 include한 후 va_list 구조체 변수를 선언한 후 va_start()를 이용해 인수목록을 초기화하고 va_arg()를 이용하여 인수를 하나씩 가져온 후 va_end()를 이용해 변수 정리를 하면 된다.

 

#include <stdarg.h>



void add_sum(int count, ...)

{

   va_list argp; // va_list 구조체 변수

   int sum = 0, i

   va_start(argp, count); // 인수  목록을 초기화(count개)하여 argp에 넣는다

   for (i = 0; i <= count; i++)
   {
   	sum += va_arg(argp, int); // argp로부터 int형 인수값을 하나씩 가져온다
   }

   va_end(argp);

   // va_list 구조체 변수 정리

   return sum

}

 

반응형