반응형
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
}
반응형
'Programming > C' 카테고리의 다른 글
[ERROR] Run-Time Check Failure #2 - Stack around the variable 'my_variable' was corrupted. (0) | 2014.05.21 |
---|---|
extern 키워드의 이해 (0) | 2014.05.20 |
Visual studio C/C++에서 사용하지 않는 함수 찾는 방법 (0) | 2014.05.19 |
static inline (0) | 2014.05.15 |