반응형
[게임프로그래밍전문가 필기 2022 - 1회 B형 4번 문제에서 발췌]
#include <stdarg.h>
#include <iostream>
int func(int count, ...)
{
va_list list;
va_start(list, count);
int sum = 0;
for(int i = 0; i < count; i++)
{
sum += va_arg(list, int);
}
va_end(list);
return sum;
}
int main()
{
std::cout << func(2, 2, 2, 2);
return 0;
}
func라는 함수를 살펴보겠음
main함수에서 func를 사용할때는 4개의 인수를 보내는데
함수를 살펴보면 4개의 인수에 대한 정의를 해놓지 않았음..!
다만 ' ... '이 보이는데 이게바로 가변인자임
그렇다면 함수에서는 이러한 가변인자들을 어떻게 사용할까?
인자를 list에 담아서 for문을 통해 하나하나 빼서 사용하는게 일반적이라고 할 수 있음
va_start를 보면 list와 첫번째 인자를 받는데
list를 초기화 하기위해 list를 받고 가변인자의 시작 주소값을 알아내기 위해 첫번째 인자를 받음
va_arg(리스트,순서)를 이용해 해당 주소값에 있는 값들을 꺼내옴
출력값은 4
반응형
LIST