C 언어
때로는 미리 정의된 수의 매개변수 대신 다양한 수의 인수, 즉 매개변수를 사용할 수 있는 함수를 갖고자 할 때 상황이 발생할 수 있습니다. C 프로그래밍 언어는 이러한 상황에 대한 솔루션을 제공하며 요구 사항에 따라 다양한 수의 매개변수를 허용할 수 있는 함수를 정의할 수 있습니다. 다음 예는 이러한 함수의 정의를 보여줍니다.
int func(int, ... ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); }
func() 함수는 마지막 인수가 타원으로 되어 있습니다. 즉, 세 개의 점(... ) 그리고 타원 바로 앞의 것은 항상 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; /* initialize valist for num number of arguments */ va_start(valist, num); /* access all the arguments assigned to valist */ for (i = 0; i < num; i++) { sum += va_arg(valist, int); } /* clean memory reserved for 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 언어
C++ 함수 오버로딩 이 튜토리얼에서는 예제를 통해 C++의 함수 오버로딩에 대해 알아볼 것입니다. C++에서는 전달된 인수의 수 및/또는 유형이 다른 경우 두 함수의 이름이 같을 수 있습니다. 이름은 같지만 인수가 다른 이러한 함수를 오버로드된 함수라고 합니다. 예: // same name different arguments int test() { } int test(int a) { } float test(double a) { } int test(int a, double b) { } 여기에서 4개의 함수는 모두 오버로드된
C 사용자 정의 함수 이 튜토리얼에서는 예제를 통해 C 프로그래밍에서 사용자 정의 함수를 만드는 방법을 배웁니다. 함수는 특정 작업을 수행하는 코드 블록입니다. C를 사용하면 필요에 따라 기능을 정의할 수 있습니다. 이러한 함수를 사용자 정의 함수라고 합니다. 예: 원을 만들고 반지름과 색상에 따라 색상을 지정해야 한다고 가정합니다. 이 문제를 해결하기 위해 두 가지 함수를 만들 수 있습니다. createCircle() 기능 color() 기능 예:사용자 정의 함수 다음은 두 개의 정수를 더하는 예입니다. 이 작업을 수