산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 언어 가변 인자 마스터하기: 실전 가이드

미리 정해진 매개변수 개수 대신 가변 개수의 인자, 즉 매개변수를 받을 수 있는 함수가 필요한 상황을 마주할 수 있습니다. C 프로그래밍 언어는 이 상황에 대한 해결책을 제공하며, 요구사항에 따라 가변 개수의 매개변수를 허용하는 함수를 정의할 수 있습니다. 다음 예제는 그러한 함수의 정의를 보여줍니다.

int func(int, ...) {
    ...
}
int main() {
    func(1, 2, 3);
    func(1, 2, 3, 4);
}

함수 func()의 마지막 인자가 생략 부호(세 개의 점 ...)이고, 생략 부호 바로 앞의 인자가 항상 가변 인자의 총 개수를 나타내는 int라는 점에 유의하세요. 이러한 기능을 사용하려면 stdarg.h 헤더 파일을 활용해야 합니다. 이 헤더는 가변 인자 기능 구현에 필요한 함수와 매크로를 제공하며, 다음 단계를 따릅니다.

이제 위 단계를 따라 가변 개수의 매개변수를 받아 평균을 반환하는 간단한 함수를 작성해 보겠습니다.

Live Demo
#include <stdio.h>
#include <stdarg.h>
double average(int num, ...) {
    va_list valist;
    double sum = 0.0;
    int i;
    /* num 개수의 인자로 valist 초기화 */
    va_start(valist, num);
    /* valist에 할당된 모든 인자에 접근 */
    for (i = 0; i < num; i++) {
        sum += va_arg(valist, int);
    }
    /* valist에 예약된 메모리 정리 */
    va_end(valist);
    return sum / num;
}
int main() {
    printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2, 3, 4, 5));
    printf("Average of 5, 10, 15 = %f\n", average(3, 5, 10, 15));
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 나옵니다. average() 함수가 두 번 호출되었으며, 각 호출에서 첫 번째 인자가 전달되는 가변 인자의 총 개수를 나타낸다는 점에 유의하세요. 가변 인자 전달에는 생략 부호만 사용됩니다.

Average of 2, 3, 4, 5 = 3.500000
Average of 5, 10, 15 = 10.000000

C 언어

  1. C 사용자 정의 함수 4가지 검증된 패턴
  2. C 저장 클래스 이해: 범위, 생명주기, 성능
  3. C 언어에서 1차원 및 2차원 배열을 함수에 전달하는 방법 – 실전 가이드
  4. 파이썬 함수 인자 마스터하기: 위치, 키워드, 기본 매개변수
  5. C++ 변수와 데이터 타입: int, double, char, string, bool 전문가 가이드
  6. C 변수, 데이터 타입, 상수 – 실전 가이드
  7. Verilog 할당문 이해: 유형, 문법, 모범 사례
  8. C 변수 완전 이해: 선언, 정의, 초기화, 저장 클래스, Lvalue/Rvalue
  9. C 함수 마스터: 선언, 정의, 호출, 인자 전달(값/참조), 재귀
  10. C 포인터 마스터: 기초부터 포인터 연산, 배열/함수 포인터, 동적 할당까지