찾다
  • 로그인
  • 가입
비밀번호 재설정 성공

당신이 관심을 갖고 있는 프로젝트를 팔로우하고 그들에 관한 최신 뉴스를 맛보세요

C 변수 매개변수

수집 205
읽다 91677
업데이트 시간 2016-09-11

때때로 함수가 미리 정의된 수의 매개변수 대신 가변적인 수의 매개변수를 사용하기를 원하는 상황에 직면할 수 있습니다. C 언어는 특정 요구 사항에 따라 가변 개수의 인수를 허용하는 함수를 정의할 수 있도록 하여 이러한 상황에 대한 솔루션을 제공합니다. 다음 예에서는 이러한 함수의 정의를 보여줍니다.

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

함수의 마지막 매개변수 func()는 줄임표, 즉 점 3개(...)로 작성된다는 점에 유의하세요. 줄임표 앞의 매개변수는 항상 int입니다. 전달될 가변 매개변수입니다. 이 기능을 사용하려면 가변 기능을 구현하는 함수와 매크로를 제공하는 stdarg.h 헤더 파일을 사용해야 합니다. 구체적인 단계는 다음과 같습니다.

  • 함수를 정의합니다. 마지막 매개변수는 줄임표이고 줄임표 앞의 매개변수는 항상 int로 매개변수 수를 나타냅니다.

  • 함수 정의에 va_list 유형 변수를 생성합니다. 이 유형은 stdarg.h 헤더 파일에 정의되어 있습니다.

  • int 매개변수와 va_start 매크로를 사용하여 va_list 변수를 매개변수 목록으로 초기화합니다. va_start 매크로는 stdarg.h 헤더 파일에 정의되어 있습니다.

  • 인수 목록의 각 항목에 액세스하려면 va_arg 매크로와 va_list 변수를 사용하세요.

  • 매크로 va_end를 사용하여 va_list 변수에 할당된 메모리를 정리하세요.

이제 위의 단계에 따라 가변 개수의 인수를 취하고 평균값을 반환하는 함수를 작성해 보겠습니다.

#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() 함수는 두 번 호출되며, 매번 첫 번째 매개변수는 전달된 변수 매개변수의 총 개수를 나타냅니다. 타원은 가변 개수의 인수를 전달하는 데 사용됩니다.

rreee
핫 AI 도구
Undress AI Tool
Undress AI Tool

무료로 이미지를 벗다

AI Clothes Remover
AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undresser.AI Undress
Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

Stock Market GPT
Stock Market GPT

더 현명한 결정을 위한 AI 기반 투자 연구

인기 있는 도구
메모장++7.3.1
메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6
드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전
SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)