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) // 함수 선언

위에 지정된 함수는 두 개의 정수 매개 변수를 사용합니다.

기능 정의

 C- Edureka의 이미지 기능
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에서 사용자 정의 함수 유형으로 이동

사용자 정의 유형 함수 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표준 입 / 출력 헤더 파일
2minting.h콘솔 입력 / 출력 헤더 파일
string.hgets (), puts () 등과 같은 문자열 관련 라이브러리 함수.
4stdlib.hmalloc (), calloc (), exit () 등과 같은 일반 라이브러리 함수
5math.hsqrt (), pow () 등과 같은 수학 연산 관련 함수
6time.h시간 관련 기능
7ctype.h문자 처리 기능
8stdarg.h가변 인수 함수
9signal.h신호 처리 기능
10setjmp.h점프 기능
열한locale.h로케일 기능
12errno.h오류 처리 기능
13assert.h진단 기능

이제 위의 C 함수를 살펴보면 함수의 모든 뉘앙스와 C 언어로 구현하는 방법을 이해했을 것입니다. 이 블로그가 유익하고 가치가 있기를 바랍니다.

따라서 우리는‘Functions In C’에 대한이 기사를 끝냈습니다. 자세한 내용은 다음을 확인하십시오. , 신뢰할 수있는 온라인 학습 회사입니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.