프로그래밍/C++

가변인자

우대비 2022. 8. 11. 10:10
반응형

[게임프로그래밍전문가 필기 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

'프로그래밍 > C++' 카테고리의 다른 글

동적할당  (0) 2022.10.20
초기화 리스트  (0) 2022.10.18
C++ 게임프로그래밍전문가자격증 필기 21-2 B형 2번 포인터 문제  (0) 2022.08.17
C++ 정수  (0) 2022.08.12
C++ 입출력  (0) 2022.08.11