본문 바로가기

[C,C++]

[C,C++ 개념정리] Ellipsis, 생략부호

728x90

 < Ellipsis, 생략부호 >

 

매개변수가 정해지지 않았으면 좋겠다... 할때 생략부호 ' ... ' 을 사용한다. va_list로 생성, va_start와 va_end로 시작과 끝을 설정한다.

- 코드 - 

#include <iostream>
#include <cstdarg> // for ellipsis

using namespace std;

double findAverage(int count, ...){ // 파라미터로 받아올 argument의 갯수

double sum = 0;

    va_list list; // list를 생성한다.

    va_start(list, count); // list의 개수에 해당하는 count를 넘겨준다.

    for(int arg = 0; arg < count; ++arg) // 필요한 계산을 해준다.
        sum += va_arg(list, int); // 어떤 타입으로 사용할지는 정헤져있어야 한다.

    va_end(list);

return sum / count;    
}

int main()
{
    cout << findAverage(1, 1, 2, 3, "hello", 'c') << endl;
    cout << findAverage(3, 1, 2, 3) << endl;
    cout << findAverage(5, 1, 2, 3, 4, 5) << endl;
    cout << findAverage(10, 1, 1, 2, 3, 4, 5) << endl;
    
    return 0;
}

 

 - 출력 결과 -

728x90