logo

C의 사용자 정의 함수

사용자 정의 함수 특정 작업을 수행하기 위해 사용자가 직접 정의한 C 언어 함수 유형입니다. 이는 우리 프로그램에 코드 재사용성과 모듈성을 제공합니다. 사용자 정의 함수는 사용자가 작업을 지정하고 사용에 헤더 파일이 필요하지 않기 때문에 내장 함수와 다릅니다.

이 기사에서는 다음에 대해 알아볼 것입니다. 사용자 정의 함수, 함수 프로토타입, 함수 정의, 함수 호출 및 함수에 매개변수를 전달할 수 있는 다양한 방법.



문자열로 부동

C에서 사용자 정의 함수를 사용하는 방법은 무엇입니까?

사용자 정의 함수를 사용하려면 먼저 구문의 다양한 부분을 이해해야 합니다. C의 사용자 정의 함수는 세 부분으로 나눌 수 있습니다.

  1. 기능 프로토타입
  2. 기능 정의
  3. 함수 호출

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. 기능 매개변수
  2. 기능 본체
  3. 반환 값

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. 가치에 의한 호출
  2. 참조로 전화

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 등을 어떻게 구현되는지 알지 못한 채 사용할 경우 함수를 사용하여 구현 세부 사항을 숨길 수 있습니다.
  • 수정이 거의 또는 전혀 없이 한 프로그램에서 개발된 기능을 다른 프로그램에서 사용할 수 있으므로 개발 시간이 단축됩니다.