ㅏ 사용자 정의 함수 특정 작업을 수행하기 위해 사용자가 직접 정의한 C 언어 함수 유형입니다. 이는 우리 프로그램에 코드 재사용성과 모듈성을 제공합니다. 사용자 정의 함수는 사용자가 작업을 지정하고 사용에 헤더 파일이 필요하지 않기 때문에 내장 함수와 다릅니다.
이 기사에서는 다음에 대해 알아볼 것입니다. 사용자 정의 함수, 함수 프로토타입, 함수 정의, 함수 호출 및 함수에 매개변수를 전달할 수 있는 다양한 방법.
문자열로 부동
C에서 사용자 정의 함수를 사용하는 방법은 무엇입니까?
사용자 정의 함수를 사용하려면 먼저 구문의 다양한 부분을 이해해야 합니다. C의 사용자 정의 함수는 세 부분으로 나눌 수 있습니다.
- 기능 프로토타입
- 기능 정의
- 함수 호출
C 함수 프로토타입
함수 프로토타입은 다음을 지정하는 함수 선언이라고도 합니다. 함수 이름, 함수 매개변수, 그리고 반환 유형 . 함수 프로토타입에는 함수 본문이 포함되어 있지 않습니다. 기본적으로 프로그램의 후반부에서 사용할 수 있는 사용자 정의 함수의 존재를 컴파일러에 알리는 데 사용됩니다.
통사론
return_type function_name (type1 arg1 , type2 arg2 , ... typeN argN );>
함수 프로토타입에서 인수 이름을 건너뛸 수도 있습니다. 그래서,
return_type function_name (type1 , type2 , ... typeN);>

C 함수 정의
함수가 호출되면 함수 정의에는 실행될 실제 명령문이 포함됩니다. 함수 정의의 모든 명령문은 다음 안에 포함됩니다. { } 바지 멜빵.
통사론
return_type function_name (type1 arg1 , type2 arg2 .... typeN argN ) { // actual statements to be executed // return value if any }>
메모: 함수 정의 뒤에 함수 호출이 있으면 함수 프로토타입 부분을 건너뛰고 함수를 직접 정의할 수 있습니다.
C 함수 호출
사용자 정의 함수에 제어권을 넘기려면 해당 함수를 호출해야 합니다. 함수는 이름 뒤에 대괄호를 사용하여 호출됩니다. 해당 인수는 대괄호 안에 전달됩니다.
통사론
function_name(arg1, arg2, ... argN);>
사용자 정의 함수의 예
다음 C 프로그램은 프로그램에서 사용자 정의 함수를 사용하는 방법을 보여줍니다.
씨
// C Program to illustrate the use of user-defined function> #include> // Function prototype> int> sum(> int> ,> int> );> // Function definition> int> sum(> int> x,> int> y)> {> > int> sum;> > sum = x + y;> > return> x + y;> }> // Driver code> int> main()> {> > int> x = 10, y = 11;> > // Function call> > int> result = sum(x, y);> > printf> (> 'Sum of %d and %d = %d '> , x, y, result);> > return> 0;> }> |
>
>산출
Sum of 10 and 11 = 21>
함수 정의의 구성요소
함수 정의에는 세 가지 구성 요소가 있습니다.
- 기능 매개변수
- 기능 본체
- 반환 값
1. 기능 매개변수
함수 매개변수(인수라고도 함)는 호출자가 호출한 함수에 전달하는 값입니다. 함수 매개변수를 전혀 전달하지 않거나 원하는 수만큼 함수에 전달할 수 있습니다.
함수 정의에서 함수 이름과 해당 유형을 정의해야 하며, 함수 호출에서는 동일한 수와 유형의 매개변수만 전달할 수 있습니다.
의 이름
예
int foo ( int a, int b) ;>
여기, ㅏ 그리고 비 함수 매개변수입니다.
메모: C 언어는 함수에 가변 개수의 인수를 전달할 수 있는 방법을 제공합니다. 이러한 함수를 가변 함수라고 합니다.
2. 기능 본체
함수 본문은 { } 중괄호로 묶인 명령문 세트입니다. 함수가 호출될 때 실행되는 명령문입니다.
예
int foo (int a, int b) { int sum = a + b; return sum; }>
여기서, 사이의 진술은 { 그리고 } 기능 본문입니다.
3. 반환 값
반환 값은 함수가 호출자에게 반환하는 값입니다. 함수는 단일 값만 반환할 수 있으며 선택 사항입니다. 반환되는 값이 없으면 반환 유형은 void로 정의됩니다.
그만큼 반환 키워드 함수에서 값을 반환하는 데 사용됩니다.
통사론
return ( expression );>
예
int foo (int a, int b) { return a + b; }>
메모: 포인터나 구조체를 사용하여 C의 함수에서 여러 값을 반환할 수 있습니다.
rhel 대 센토스
사용자 정의 함수에 매개변수 전달
두 가지 방법을 사용하여 C의 함수에 매개변수를 전달할 수 있습니다.
- 가치에 의한 호출
- 참조로 전화
1. 가치에 의한 호출
값별 호출에서는 값의 복사본이 함수에 전달되고 함수에 대한 변경 사항은 값에 다시 반영되지 않습니다. 실제 인수와 형식 인수는 서로 다른 메모리 위치에 생성됩니다.
예
리눅스에서 스크립트를 실행하는 방법
씨
// C program to show use of> // call by value> #include> void> swap(> int> a,> int> b)> {> > int> temp = a;> > a = b;> > b = temp;> }> // Driver code> int> main()> {> > int> x = 10, y = 20;> > printf> (> 'Values of x and y before swap are: %d, %d
'> , x,> > y);> > swap(x, y);> > printf> (> 'Values of x and y after swap are: %d, %d'> , x,> > y);> > return> 0;> }> |
>
>산출
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 10, 20>
메모: 값은 참조로 전달되지 않으므로 값에 의한 호출에서는 변경되지 않습니다.
2. 참조 전화
참조에 의한 호출에서는 인수의 주소가 함수에 전달되고 함수에 대한 변경 사항이 값에 다시 반영됩니다. 우리는 포인터 함수에서 주소를 수신하는 데 필요한 유형입니다.
예
씨
// C program to implement> // Call by Reference> #include> void> swap(> int> * a,> int> * b)> {> > int> temp = *a;> > *a = *b;> > *b = temp;> }> // Driver code> int> main()> {> > int> x = 10, y = 20;> > printf> (> 'Values of x and y before swap are: %d, %d
'> , x,> > y);> > swap(&x, &y);> > printf> (> 'Values of x and y after swap are: %d, %d'> , x,> > y);> > return> 0;> }> |
>
호랑이 사자 차이
>산출
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 20, 10>
자세한 내용은 값에 의한 호출과 참조에 의한 호출의 차이점 문서를 참조하세요.
사용자 정의 함수의 장점
프로그램에서 기능을 사용하면 다음과 같은 장점이 있습니다.
- 함수를 사용하면 프로그램 내 코드 중복을 피할 수 있습니다. 결과적으로 코드를 더 빠르게 작성할 수 있고 더 쉽게 읽을 수 있습니다.
- 코드는 함수를 사용하여 분할하고 정복할 수 있습니다. 이 프로세스를 분할 및 정복이라고 합니다. 메인 함수 내에서 많은 양의 코드를 작성하는 것은 물론 테스트와 디버깅도 어렵습니다. 하나의 작업을 기능을 사용하여 여러 개의 작은 하위 작업으로 나눌 수 있으므로 전체적인 복잡성이 줄어듭니다.
- 예를 들어 C에서 pow, sqrt 등을 어떻게 구현되는지 알지 못한 채 사용할 경우 함수를 사용하여 구현 세부 사항을 숨길 수 있습니다.
- 수정이 거의 또는 전혀 없이 한 프로그램에서 개발된 기능을 다른 프로그램에서 사용할 수 있으므로 개발 시간이 단축됩니다.