이 기사는 간단하지만 매우 기본적이고 중요한 C의 함수 인 개념을 설명하고 데모로 이어집니다. 이 기사에서는 다음 사항을 다룰 것입니다.
- C의 함수는 무엇입니까?
- C 함수의 장점
- C의 함수 유형
- 기능 선언 및 정의
- 함수 호출
- C의 사용자 정의 함수 유형
- 전달 된 인수 및 반환 값 없음
- 전달 된 인수가 없지만 반환 값
- 인수가 전달되었지만 반환 값이 없습니다.
- 전달 된 인수 및 반환 값
- C 라이브러리 함수
함수는 모든 프로그래밍 언어의 구성 요소입니다. 간단히 말해서, 입력을 받아 특정 작업을 수행 한 다음 출력을 반환하는 일련의 명령문의 함수입니다.
기능 생성의 이념은 특정 작업을 수행하는 관련 문 집합을 함께 묶는 것입니다. 따라서 서로 다른 입력 세트에 대해 동일한 코드를 여러 번 작성할 필요가 없습니다. 다른 입력에 대해 함수를 호출하면 주어진 입력에 대해 지정된 작업을 수행하고 출력을 반환합니다. 원하는만큼 함수를 호출 할 수 있습니다. 이 블로그에서는 C 프로그래밍 언어의 함수에 대한 모든 뉘앙스를 배웁니다.
C의 함수는 무엇입니까?
함수는 다른 프로그래밍 언어와 마찬가지로 C에서 동일합니다. 특정 작업을 수행하기 위해 함께 묶인 코드 세트입니다. 실행될 코드 세트는 중괄호 (예 :‘{}’)로 지정됩니다.
C로 함수를 작성하는 방법을 배우기 전에 먼저 장점이 무엇인지 이해합시다.
C 함수의 장점
함수의 장점은 모든 프로그래밍 언어에서 공통적입니다.
함수의 기본 개념은 코드의 중복성을 줄이는 것입니다. 프로그램에서 여러 번 수행해야하는 기능이 있다고 가정하면 여러 번 작성하는 대신 해당 작업에 대한 함수를 만들어 원하는만큼 호출 할 수 있습니다. 또 다른 숨겨진 이점은 나중에 기능 논리가 변경 될 경우 여러 위치에서 변경할 필요가 없다는 것입니다. 한곳 (즉, 함수)에서 코드를 변경하면 프로그램 전체에 반영됩니다.
또 다른 이점의 모듈화. 각각의 모든 것을 포함하는 큰 코드를 작성하면 코드의 가독성이 떨어지고 관리가 어려워집니다. 이해하기 쉽고 관리하기 쉬운 함수를 사용하여 개별 기능에 대한 섹션으로 코드를 나눌 수 있습니다.
함수는 또한 내부 구현을 알지 못해도 함수를 호출하고 출력을 얻을 수있는 추상화를 제공합니다.
함수 C 유형으로 이동
C의 함수 유형
두 가지 유형의 기능이 있습니다.
라이브러리 기능
사용자 정의 함수
라이브러리 함수는 strcat (), printf (), scanf () 등과 같이 C 라이브러리에 이미 정의 된 함수입니다. 이러한 함수를 사용하려면 적절한 헤더 파일을 포함하면됩니다.
사용자 정의 함수는 사용자가 정의한 함수입니다. 이러한 기능은 코드 재사용 및 시간과 공간 절약을 위해 만들어졌습니다.
__init__이란 무엇입니까?
이제 함수 생성의 이점을 알았으므로 C로 함수를 선언하는 방법을 이해하겠습니다.
기능 선언 및 정의
기능 선언 :
함수 선언 구문 :
return_type function_name (data_type arg1, data_type arg2) int add (int x, int y) // 함수 선언
함수 선언에서 함수 이름, 입력 매개 변수 수, 데이터 유형 및 함수의 반환 유형을 지정합니다. 함수 선언은 함수의 데이터 유형 및 함수의 반환 유형과 함께 함수가 예상하는 인수 목록에 대해 컴파일러에 알려줍니다.
함수 선언에서 매개 변수의 이름을 지정하는 것은 선택 사항이지만 데이터 유형을 지정하는 것은 필수입니다.
int add (int, int) // 함수 선언
위에 지정된 함수는 두 개의 정수 매개 변수를 사용합니다.
기능 정의
int add (int, int) // 함수 선언 return_type function_name (parameters) {Function body}
위 이미지에서 볼 수 있듯이 함수 정의는 함수 헤더와 함수 본문의 두 부분으로 구성됩니다.
기능 헤더 : 함수 헤더는 세미콜론이없는 함수 선언과 동일합니다. 함수 헤더에는 함수 이름, 매개 변수 및 반환 유형이 포함됩니다.
반환 유형 : 반환 유형은 함수에서 반환 할 값의 데이터 유형입니다. 함수는 값을 반환하거나 반환하지 않을 수 있습니다. 그렇다면 반환 값의 데이터 유형을 지정해야합니다. 그렇지 않으면 반환 유형을 무효화해야합니다.
기능 이름 : 이것은 필요할 때 & 필요할 때 함수를 호출 할 수있는 함수의 이름입니다.
매개 변수 : 매개 변수는 함수에 전달 될 입력 값입니다. 인수의 데이터 유형, 순서 및 함수에 전달 될 인수의 수에 대해 알려줍니다. 매개 변수는 선택 사항입니다. 매개 변수없이 함수를 가질 수도 있습니다.
기능 본체 : 함수 본문은 특정 작업을 수행하는 문 집합입니다. 함수가하는 일을 정의합니다.
예:
int add (int x, int y) {int sum = x + y return (sum)}
함수를 정의하고 사용하기 전에 선언하는 것이 좋습니다. C에서는 같은 위치에서 함수를 선언하고 정의 할 수 있습니다.
예:
#include int add (int, int) // 함수 선언 // 함수 정의 int add (int x, int y) // function header {// function body int sum = x + y return (sum)} // Main Function int main () {int sum = add (23, 31) printf ( '% d', sum) return 0}
위의 예에서 볼 수 있듯이 int sum = add (23, 31) 문을 사용하여 함수를 호출하고 있습니다. 함수에서 반환 된 값은 합계 변수에 저장됩니다.
진행하기 전에 parament에 대해 이해해야 할 중요한 개념이 하나 더 있습니다. 매개 변수에는 두 가지 유형이 있습니다.
실제 매개 변수 : 함수를 호출하면서 전달되는 매개 변수를 실제 매개 변수라고합니다. 예를 들어, 위의 예에서 23 & 31은 실제 매개 변수입니다.
공식 매개 변수 : 함수에서 수신하는 매개 변수를 형식 매개 변수라고합니다. 예를 들어, 위의 예에서 x & y는 형식 매개 변수입니다.
빨리 넘어 가서 C에서 함수를 호출하는 다양한 방법을 이해하겠습니다.
함수 호출
함수를 호출하는 방법에는 두 가지가 있습니다.
- 가치로 부르기
- 참조로 전화
가치로 부르기
값 메서드 호출에서 실제 매개 변수의 값은 함수에 인수로 전달됩니다. 실제 매개 변수의 값은 공식 매개 변수로 변경할 수 없습니다.
be value 메서드를 호출하면 형식 및 실제 매개 변수에 다른 메모리 주소가 할당됩니다. 실제 매개 변수의 값만 형식 매개 변수에 복사됩니다.
예:
#include void Call_By_Value (int num1) {num1 = 42 printf ( 'nInside Function, Number is % d', num1)} int main () {int num num = 24 printf ( 'nBefore Function, Number is % d', num ) Call_By_Value (num) printf ( 'nAfter Function, Number is % dn', num) return 0}
산출
위의 예에서 값 함수로 호출하기 전에 num의 값은 24입니다. 그러면 함수를 호출하고 값을 전달하고 함수 내에서 변경하면 42가됩니다. 돌아와서 다시 값을 인쇄하면 주 기능에서 num의 24가됩니다.
참조로 전화
참조에 의한 호출에서 실제 매개 변수의 메모리 주소는 인수로 함수에 전달됩니다. 여기서 실제 매개 변수의 값은 공식 매개 변수에 의해 변경 될 수 있습니다.
실제 및 형식 매개 변수 모두에 동일한 메모리 주소가 사용됩니다. 따라서 형식 매개 변수의 값이 수정되면 실제 매개 변수에도 반영됩니다.
C에서는 포인터를 사용하여 참조로 호출을 구현합니다. 아래 예에서 볼 수 있듯이 Call_By_Reference 함수는 정수에 대한 포인터를 예상합니다.
이제이 num1 변수는 실제 매개 변수의 메모리 주소를 저장합니다. 따라서 num1이 가리키는 메모리 주소에 저장된 값을 인쇄하려면 역 참조 연산자 즉 *를 사용해야합니다. 따라서 * num1의 값은 42입니다.
주소 연산자 &는 모든 데이터 유형의 변수 주소를 가져 오는 데 사용됩니다. 따라서 함수 호출 문‘Call_By_Reference (& num)’에서 num의 주소가 전달되어 해당 주소를 사용하여 num을 수정할 수 있습니다.
예
#include // 함수 정의 void Call_By_Reference (int * num1) {* num1 = 42 printf ( 'nInside Function, Number is % d', * num1)} // Main Function int main () {int num num = 24 printf ( 'nBefore Function, Number is % d', num) Call_By_Reference (& num) printf ( 'nAfter Function, Number is % dn', num) return 0}
산출
이 예에서 num의 값은 처음에 주 함수 내에서 24입니다. Call_By_Reference 함수에 전달되고 형식 매개 변수에 의해 값이 수정되면 실제 매개 변수에 대해서도 변경됩니다. 이것이 함수 뒤에 num 값을 인쇄 할 때 42를 인쇄하는 이유입니다.
사용자 정의 유형 함수 C에서
전달 된 반환 유형 및 인수에 따라 다양한 종류의 사용자 정의 함수가 있습니다.
인수가 전달되지 않고 반환 값이없는 상태로 계속 진행
1. 전달 된 인수 및 반환 값 없음
통사론:
함수 선언 :
void function () 함수 호출 : function () 함수 정의 : void function () {문}
예
#include void add () void add () {int x = 20 int y = 30 int sum = x + y printf ( 'sum % d', sum)} int main () {add () return 0}
전달 된 인수는 없지만 반환 값으로 계속 진행
2 전달 된 인수가 없지만 반환 값
통사론:
함수 선언 :
int function () function call : function () function definition : int function () {statements return a}
예:
#include int add () int add () {int x = 20 int y = 30 int sum = x + y return (sum)} int main () {int sum sum = add () printf ( 'sum % d', 합계) 반환 0}
인수가 전달되었지만 반환 값이없는 상태로 이동
3 인수가 전달되었지만 반환 값이 없음
통사론:
오버로딩 vs 오버로딩 C ++
함수 선언 :
void function (int) function call : function (a) function definition : void function (int a) {statements}
예:
#include void add (int, int) void add (int x, int y) {int sum = x + y return (sum)} int main () {add (23, 31) return 0}
인수가 전달되고 반환 값으로 이동
4 전달 된 인수 및 반환 값
통사론:
함수 선언 :
int function (int) 함수 호출 : function (a) 함수 정의 : int function (int a) {statements return a}
예
#include int add (int, int) int add (int x, int y) {int sum = x + y return (sum)} int main () {int sum = add (23, 31) printf ( '% d' , 합계) 반환 0}
이제 프로그램을 작성하기 위해 중요한 C 라이브러리 함수를 빠르게 살펴 보겠습니다.
C 라이브러리 함수
라이브러리 함수는 미리 정의되고 기본적으로 존재하는 C의 함수입니다. 프로그램에 특정 헤더 파일을 포함하기 만하면 해당 헤더 파일에 정의 된 기능을 사용할 수 있습니다. 각 헤더 파일은 특정 종류의 기능을 제공합니다. 헤더 파일의 확장자는 .h입니다.
예를 들어, printf / scanf 함수를 사용하려면 표준 입력 / 출력과 관련된 기능을 제공하는 프로그램에 stdio.h를 포함해야합니다.
다음은 헤더 파일 목록입니다.
하나 | stdio.h | 표준 입 / 출력 헤더 파일 |
2 | minting.h | 콘솔 입력 / 출력 헤더 파일 |
삼 | string.h | gets (), puts () 등과 같은 문자열 관련 라이브러리 함수. |
4 | stdlib.h | malloc (), calloc (), exit () 등과 같은 일반 라이브러리 함수 |
5 | math.h | sqrt (), pow () 등과 같은 수학 연산 관련 함수 |
6 | time.h | 시간 관련 기능 |
7 | ctype.h | 문자 처리 기능 |
8 | stdarg.h | 가변 인수 함수 |
9 | signal.h | 신호 처리 기능 |
10 | setjmp.h | 점프 기능 |
열한 | locale.h | 로케일 기능 |
12 | errno.h | 오류 처리 기능 |
13 | assert.h | 진단 기능 |
이제 위의 C 함수를 살펴보면 함수의 모든 뉘앙스와 C 언어로 구현하는 방법을 이해했을 것입니다. 이 블로그가 유익하고 가치가 있기를 바랍니다.
따라서 우리는‘Functions In C’에 대한이 기사를 끝냈습니다. 자세한 내용은 다음을 확인하십시오. , 신뢰할 수있는 온라인 학습 회사입니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.
질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.