C 언어에서 가변 인자와 가변 길이 매개 변수 사용하기

  • 2 minutes to read

C 언어에서 가변 인자와 가변 길이 매개 변수를 사용하면 함수에 임의의 개수의 인자를 전달할 수 있습니다. 이를 통해, 프로그래머는 유연하게 다양한 수의 매개 변수를 가진 함수를 정의할 수 있습니다.

필요한 헤더 파일 포함

가변 인자를 사용하려면 stdarg.h 헤더 파일을 포함해야 합니다.

#include <stdio.h>
#include <stdarg.h>

가변 길이 매개 변수를 사용한 합계 구하기

먼저, 가변 길이 매개 변수를 사용하여 정수들의 합계를 계산하는 예제를 살펴보겠습니다.

함수 원형 선언

int sum(int count, ...);

함수 구현

int sum(int count, ...) {
    va_list args;
    va_start(args, count);

    int total = 0;
    for (int i = 0; i < count; i++) {
        total += va_arg(args, int);
    }

    va_end(args);
    return total;
}

메인 함수 예제

int main() {
    int result = sum(4, 1, 2, 3, 4);
    printf("합계: %d\n", result);
    return 0;
}

가변 인자의 사용 방법

가변 인자를 사용하여 함수를 정의할 때, 마지막 고정 인자 다음에 ...를 사용합니다.

함수 예제

void displayValues(int count, ...) {
    va_list args;
    va_start(args, count);

    for(int i = 0; i < count; i++) {
        int num = va_arg(args, int);
        printf("%d ", num);
    }

    va_end(args);
}

주의 사항

  1. 함수에서 정확한 타입의 인자 개수와 타입을 알고 있어야 합니다. 잘못된 타입을 사용하면 예상치 못한 결과나 오류가 발생할 수 있습니다.
  2. va_startva_end는 반드시 쌍으로 사용되어야 합니다.
  3. 가변 인자는 타입 안전성이 없기 때문에 사용 시 주의가 필요합니다.

결론

C 언어에서의 가변 인자와 가변 길이 매개 변수는 매우 강력한 도구입니다. 그러나 그만큼 주의 깊게 사용해야 합니다. 정확한 인자의 개수와 타입을 알고 있지 않으면 예기치 않은 오류를 초래할 수 있으므로, 항상 신중하게 활용해야 합니다.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com