logo

C 함수

c에서는 대규모 프로그램을 기능이라는 기본 구성 요소로 나눌 수 있습니다. 이 함수에는 {}로 묶인 프로그래밍 문 세트가 포함되어 있습니다. C 프로그램에 재사용성과 모듈성을 제공하기 위해 함수를 여러 번 호출할 수 있습니다. 즉, 함수들의 집합이 프로그램을 만든다고 말할 수 있습니다. 이 기능은 다음과 같이 알려져 있습니다. 절차 또는 서브루틴 다른 프로그래밍 언어로.

C 함수의 장점

C 함수에는 다음과 같은 장점이 있습니다.

  • 함수를 사용하면 프로그램에서 동일한 논리/코드를 반복해서 다시 작성하는 것을 피할 수 있습니다.
  • 우리는 프로그램 내에서 그리고 프로그램 내 어느 위치에서든 C 함수를 여러 번 호출할 수 있습니다.
  • 대규모 C 프로그램을 여러 기능으로 나누어 보면 쉽게 추적할 수 있습니다.
  • 재사용성은 C 함수의 주요 성과입니다.
  • 그러나 C 프로그램에서는 함수 호출이 항상 오버헤드입니다.

기능 측면

C 함수에는 세 가지 측면이 있습니다.

    함수 선언함수 이름, 함수 매개변수 및 반환 유형에 대해 컴파일러에 알리려면 c 프로그램에서 함수를 전역적으로 선언해야 합니다.
    함수 호출함수는 프로그램의 어느 곳에서나 호출될 수 있습니다. 매개변수 목록은 함수 호출과 함수 선언이 달라서는 안 됩니다. 함수 선언에 선언된 것과 동일한 수의 함수를 전달해야 합니다.기능 정의여기에는 실행될 실제 명령문이 포함됩니다. 함수가 호출될 때 컨트롤이 제공되는 가장 중요한 측면입니다. 여기서는 함수에서 하나의 값만 반환될 수 있다는 점에 유의해야 합니다.
SNC 함수 측면통사론
1함수 선언return_type function_name(인수 목록);
2함수 호출function_name (인수_목록)
기능 정의return_type function_name (인수 목록) {함수 본문;}

C 언어에서 함수를 생성하는 구문은 다음과 같습니다.

 return_type function_name(data_type parameter...){ //code to be executed } 

기능 유형

C 프로그래밍에는 두 가지 유형의 함수가 있습니다.

    라이브러리 기능:scanf(), printf(), gets(), puts(), ceil(), Floor() 등과 같은 C 헤더 파일에 선언된 함수입니다.사용자 정의 함수:C 프로그래머가 여러 번 사용할 수 있도록 만든 함수입니다. 큰 프로그램의 복잡성을 줄이고 코드를 최적화합니다.
C 기능

반환 값

C 함수는 함수에서 값을 반환할 수도 있고 반환하지 않을 수도 있습니다. 함수에서 값을 반환할 필요가 없으면 반환 유형으로 void를 사용하세요.

함수에서 어떤 값도 반환하지 않는 C 함수의 간단한 예를 살펴보겠습니다.

반환 값이 없는 예:

 void hello(){ printf('hello c'); } 

함수에서 값을 반환하려면 int, long, char 등과 같은 데이터 유형을 사용해야 합니다. 반환 유형은 함수에서 반환할 값에 따라 다릅니다.

인 키

함수에서 int 값을 반환하는 C 함수의 간단한 예를 살펴보겠습니다.

반환 값의 예:

 int get(){ return 10; } 

위의 예에서는 10을 값으로 반환해야 하므로 반환 유형은 int입니다. 부동 소수점 값(예: 10.2, 3.1, 54.5 등)을 반환하려면 메서드의 반환 유형으로 float를 사용해야 합니다.

 float get(){ return 10.2; } 

이제 함수를 호출하여 함수의 값을 가져와야 합니다.

함수 호출의 다양한 측면

함수는 인수를 받아들일 수도 있고 받아들이지 않을 수도 있습니다. 값을 반환할 수도 있고 반환하지 않을 수도 있습니다. 이러한 사실을 바탕으로 함수 호출에는 네 가지 측면이 있습니다.

피트 데이비슨
  • 인수도 없고 반환 값도 없는 함수
  • 인수가 없고 반환 값이 있는 함수
  • 인수가 있고 반환 값이 없는 함수
  • 인수와 반환값이 있는 함수

인수와 반환값이 없는 함수의 예

실시예 1

 #include void printName(); void main () { printf('Hello '); printName(); } void printName() { printf('Javatpoint'); } 

산출

 Hello Javatpoint 

실시예 2

 #include void sum(); void main() { printf('
Going to calculate the sum of two numbers:'); sum(); } void sum() { int a,b; printf('
Enter two numbers'); scanf('%d %d',&a,&b); printf('The sum is %d',a+b); } 

산출

 Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34 

인수가 없고 반환 값이 있는 함수의 예

실시예 1

 #include int sum(); void main() { int result; printf('
Going to calculate the sum of two numbers:'); result = sum(); printf('%d',result); } int sum() { int a,b; printf('
Enter two numbers'); scanf('%d %d',&a,&b); return a+b; } 

산출

 Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34 

예제 2: 정사각형의 면적을 계산하는 프로그램

우분투 빌드 필수
 #include int sum(); void main() { printf('Going to calculate the area of the square
'); float area = square(); printf('The area of the square: %f
',area); } int square() { float side; printf('Enter the length of the side in meters: '); scanf('%f',&side); return side * side; } 

산출

 Going to calculate the area of the square Enter the length of the side in meters: 10 The area of the square: 100.000000 

인수가 있고 반환 값이 없는 함수의 예

실시예 1

 #include void sum(int, int); void main() { int a,b,result; printf('
Going to calculate the sum of two numbers:'); printf('
Enter two numbers:'); scanf('%d %d',&a,&b); sum(a,b); } void sum(int a, int b) { printf('
The sum is %d',a+b); } 

산출

 Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34 

예제 2: 5개 숫자의 평균을 계산하는 프로그램입니다.

 #include void average(int, int, int, int, int); void main() { int a,b,c,d,e; printf('
Going to calculate the average of five numbers:'); printf('
Enter five numbers:'); scanf('%d %d %d %d %d',&a,&b,&c,&d,&e); average(a,b,c,d,e); } void average(int a, int b, int c, int d, int e) { float avg; avg = (a+b+c+d+e)/5; printf('The average of given five numbers : %f',avg); } 

산출

 Going to calculate the average of five numbers: Enter five numbers:10 20 30 40 50 The average of given five numbers : 30.000000 

인수 및 반환 값이 있는 함수의 예

실시예 1

 #include int sum(int, int); void main() { int a,b,result; printf('
Going to calculate the sum of two numbers:'); printf('
Enter two numbers:'); scanf('%d %d',&a,&b); result = sum(a,b); printf('
The sum is : %d',result); } int sum(int a, int b) { return a+b; } 

산출

 Going to calculate the sum of two numbers: Enter two numbers:10 20 The sum is : 30 

예제 2: 숫자가 짝수인지 홀수인지 확인하는 프로그램

 #include int even_odd(int); void main() { int n,flag=0; printf('
Going to check whether a number is even or odd'); printf('
Enter the number: '); scanf('%d',&n); flag = even_odd(n); if(flag == 0) { printf('
The number is odd'); } else { printf('
The number is even'); } } int even_odd(int n) { if(n%2 == 0) { return 1; } else { return 0; } } 

산출

 Going to check whether a number is even or odd Enter the number: 100 The number is even 

C 라이브러리 함수

라이브러리 함수는 그룹화되어 라이브러리라는 공통 위치에 배치되는 C의 내장 함수입니다. 이러한 기능은 일부 특정 작업을 수행하는 데 사용됩니다. 예를 들어 printf는 콘솔에서 인쇄하는 데 사용되는 라이브러리 함수입니다. 라이브러리 함수는 컴파일러 설계자가 만듭니다. 모든 C 표준 라이브러리 함수는 확장명으로 저장된 다양한 헤더 파일 내에 정의됩니다. .시간 . 이러한 헤더 파일에 정의된 라이브러리 함수를 사용하려면 프로그램에 이러한 헤더 파일을 포함해야 합니다. 예를 들어, printf/scanf와 같은 라이브러리 함수를 사용하려면 표준 입출력에 관한 모든 라이브러리 함수를 포함하는 헤더 파일인 stdio.h를 프로그램에 포함해야 합니다.

주로 사용되는 헤더 파일 목록은 다음 표와 같습니다.

SN헤더 파일설명
1stdio.h이것은 표준 입출력 헤더 파일입니다. 표준 입출력에 관한 모든 라이브러리 함수를 포함하고 있습니다.
2코늄.h콘솔 입/출력 헤더 파일입니다.
문자열.h여기에는 gets(), puts() 등과 같은 모든 문자열 관련 라이브러리 함수가 포함되어 있습니다.
4stdlib.h이 헤더 파일에는 malloc(), calloc(), exit() 등과 같은 모든 일반 라이브러리 함수가 포함되어 있습니다.
5수학.h이 헤더 파일에는 sqrt(), pow() 등과 같은 모든 수학 연산 관련 함수가 포함되어 있습니다.
6시간.h이 헤더 파일에는 시간과 관련된 모든 기능이 포함되어 있습니다.
7ctype.h이 헤더 파일에는 모든 문자 처리 기능이 포함되어 있습니다.
8stdarg.h가변 인수 함수는 이 헤더 파일에 정의되어 있습니다.
9신호.h모든 신호 처리 기능은 이 헤더 파일에 정의되어 있습니다.
10setjmp.h이 파일에는 모든 점프 기능이 포함되어 있습니다.
열하나로케일.h이 파일에는 로케일 기능이 포함되어 있습니다.
12오류 번호.h이 파일에는 오류 처리 기능이 포함되어 있습니다.
13주장.h이 파일에는 진단 기능이 포함되어 있습니다.

C 함수에 대한 추가 세부 정보는 아래에 제공됩니다.

C 함수와 관련된 몇 가지 추가 정보가 있습니다. 그 중 일부는 다음과 같습니다:

모듈식 프로그래밍: 할 수있는 능력 나누다 거대한 프로그램 더 작고 관리하기 쉬운 모듈로 만드는 것은 C에서 기능을 활용하는 주요 이점 중 하나입니다. 각 기능에는 전체 프로그램 구조를 합리화하고 명확하게 하는 특정 작업이나 기능 구성 요소가 포함될 수 있습니다. 이 모듈식 전략은 코드 재사용을 개선하고 유지 관리 및 디버깅을 더 쉽게 만듭니다.

자바 댓글

코드 재사용: 함수를 사용하면 특정 알고리즘이나 로직을 한 번만 생성하고 이를 프로그램 전체에서 반복적으로 활용할 수 있습니다. 코드를 실행해야 할 때마다 함수를 호출하면 다른 곳에서 코드를 복제할 필요가 없습니다. 뿐만 아니라 개발 속도를 높이다 또한 일관성을 보장하고 실수할 가능성을 줄여줍니다.

캡슐화 및 추상화: 기능 구현의 세부 사항을 모호하게 함으로써 함수는 추상화 수준을 제공합니다. 함수 프로토타입의 인터페이스는 헤더 파일 , 실제 구현은 다른 소스 파일에서 제공될 수 있습니다. 인터페이스와 구현이 분리되어 있기 때문에 프로그램의 다른 부분에서는 내부적으로 어떻게 구현되는지 이해할 필요 없이 해당 기능을 활용할 수 있습니다.

쉬운 프로그램 유지 관리: 프로그램을 더 작은 기능으로 나누면 더 쉽게 이해하고 유지 관리할 수 있습니다. 각 기능에 특정 책임을 할당하는 기능을 사용하면 코드를 더 쉽게 읽을 수 있고 문제 해결 및 디버깅이 더 쉬워집니다. 오류가 발견되거나 수정이 필요한 경우 프로그램의 다른 부분에 영향을 주지 않고 필요한 기능에 집중할 수 있습니다.

향상된 협업: 기능을 사용하면 동일한 프로젝트에서 작업하는 개발자가 협업할 수 있습니다. 프로그램은 여러 팀 구성원이 작업할 수 있도록 기능별로 나누어질 수 있습니다. 다양한 기능 한 번에. 개발자는 인터페이스가 잘 지정되면 자신의 작업을 기능에 원활하게 통합할 수 있어 생산성이 향상되고 효과적인 개발이 촉진됩니다.

매개변수 전달: C의 함수에 인수나 데이터를 보내 함수가 처리할 수 있도록 할 수 있습니다. 함수는 이러한 입력을 사용하여 작업을 수행하고 결과를 생성할 수 있습니다. 매개변수를 전달하여 기능의 유연성과 적응성을 높일 수 있으며, 이는 프로그램의 전반적인 다양성을 높여줍니다.

반환 값: 함수는 자신을 호출한 코드로 값을 다시 보낼 수 있으므로 함수의 실행 결과를 전달할 수 있습니다. 함수 내에서 계산이나 데이터 조작을 수행한 후 프로그램의 다른 영역에서 반환된 값을 활용할 수 있습니다. 반환 값 결과를 계산해야 하거나 함수의 출력에 따라 조건을 설정해야 할 때 특히 유용합니다.

결론:

결론적으로 함수는 프로그램을 제공하기 때문에 C 프로그래밍에 필수적입니다. 구성, 재사용성 및 모듈성 . 개발자는 거대한 프로그램을 더 작은 기능으로 분할하여 코드를 더 효과적이고 유지 관리하기 쉽게 만들어 동일한 코드를 반복적으로 생성하는 것을 피할 수 있습니다. 프로그램의 어느 곳에서나 함수를 호출할 수 있어 유연성을 제공하고 제어 흐름을 개선합니다.

그만큼 선언, 전화 , 그리고 정의 기능의 많은 특성 중 일부에 지나지 않습니다. 컴파일러는 함수 선언을 통해 정보를 받습니다. 이름, 인수 , 그리고 반환 유형 . 유무에 관계없이 함수를 호출할 수 있습니다. 매개변수 그리고 유무에 관계없이 반환 값 . 프로그래머는 코드의 가독성과 최적화를 향상시키기 위해 사용자 정의 함수를 구성하는 반면, C 라이브러리 함수는 다음과 같습니다. 프린트프() 그리고 스캔프() 사전 설정된 기능을 제공합니다.

전반적으로 함수는 C 프로그래밍의 중요한 구성 요소로, 조직 증가, 코드 재사용, 대규모 프로그램의 간단한 추적 등의 이점을 제공합니다. 함수 호출은 약간의 오버헤드를 추가할 수 있지만 최소한의 성능 저하보다 장점이 더 큽니다. 프로그래머는 기능을 이해하고 사용하여 효과적이고 모듈화된 C 프로그램을 작성할 수 있습니다.