C언어에서 함수라 함은 특정 작업을 수행하는 프로그램으로 작성된 블록을 말합니다.
이건 함수 내에서 자료가 어떻게 처리되는가를 알 필요 없이 그저 자료를 입력한 후 출력 결과만 받으면 되기 때문에 블랙박스로 생각할 수 있습니다.
따라서 함수를 호출할 때 프로그램에서는 그저 함수에게 전달하는 입력자료와 함수의 실행 결과 함수로부터 돌려받는 출력자료만 알면 됩니다.
따라서 관련 함수를 작성하기 전까지 그 함수의 내부 처리 과정에 대해서는 하나도 몰라도 상관없습니다.
다만 함수 사용 방법에는 주의해야 합니다.
이제 본론으로 들어가서 함수가 무엇인지, 작성하는 방법은 어떻게 되는지 알아보겠습니다.
함수의 정의
C언어는 문자를 화면에 출력하는 등의 기능을 실행하는 명령어가 따로 없습니다.
따라서 어떤 기능을 구현한다는 건 그 기능을 실행하는 프로그램을 대입문 또는 제어문을 이용해서 작성해야 하는데, 이런 특정 기능을 실행하는 프로그램의 집합을 함수라고 합니다.
C언어 프로그램은 특정한 기능을 수행하는 함수들, 대입문, 제어문으로 구성되고 반드시 하나 이상의 함수가 존재해야 하는 특징을 가집니다. 두 개 이상의 함수가 존재할 때는 main() 함수부터 실행되기 때문에 main() 함수는 반드시 존재해야 합니다.
그 결과, 프로그램이 동작할 때 다수의 함수로 구성된 프로그램의 실행 순서는 main() 함수의 첫 번째 명령부터 실행됩니다.
- 함수의 종류
- 라이브러리 함수
C언어는 특정한 기능을 수행하는 명령어가 별도로 없으므로 사용자가 기본적인 기능을 수행하는 프로그램을 본인이 작성하여 사용하는 일은 너무 힘듭니다.
현실적으로 얘기하면 시간이 굉장히 많이 들게 되는 것입니다.
그래서 컴파일러 공급자가 기본적인 기능을 수행하는 프로그램을 작성해서 함수로 제고하면, 사용자는 컴파일러 업체가 제공한 함수를 정해진 양식대로 사용해서 기본 기능들을 수행할 수 있습니다.
이런 경우의 기본 기능 함수가 그 유명한 라이브러리 함수입니다.
모든 라이브러리 함수는 관련된 헤더 파일에 포함되어 있기 때문에 특정한 라이브러리 함수를 사용하려면 그 함수를 포함하는 헤더 파일을 #include 명령을 사용하여 포함시켜야 합니다.
- 사용자가 작성한 함수
라이브러리 함수가 지원하지 않는 특정한 기능을 수행하는 프로그램은 사용자가 직접 특정한 기능을 수행하는 프로그램을 작성하여 사용하는데, 이런 프로그램을 사용자가 작성한 함수라고 말합니다.
그렇기 때문에 사용자가 작성한 함수는 함수명과 인수가 정해져 있는 것이 아니고 사용자가 직접 함수의 기능에 따라 정의해서 사용하게 됩니다.
함수를 작성하는 방법
C언어는 특정한 기능을 수행하는 명령어가 따로 없기 때문에 사용자가 먼저 작성해 둔 함수를 불러서 사용합니다.
보통 이를 실행 함수라고 하고, 이를 동작시키는 함수를 부르는 함수라고 부르기도 합니다.
- 함수명 : 실행 함수의 이름을 의미, 사용자가 함수명을 작성할 때는 가능한 함수의 기능을 나타낼 수 있는 이름으로 하는 것이 편리함.
- 함수의 자료형 : 실행 함수가 실행되었을 때 발생하는 결괏값. 부르는 함수에 반환하는 값.
- 인수 리스트 : 부르는 함수가 실행 함수를 실행시킬 때, 부르는 함수에서 전달하는 인수값을 전달받기 위한 변수들의 리스트를 의미. 부르는 함수에서 전달되는 인수는 정의된 자료형 중 상수값이어야 함.
- 실행 함수의 작성 방법
앞서 함수의 작성 방법에 따라서 두 개의 정수를 더하는 기능을 수행하는 함수의 예시를 들어보겠습니다.
여기서 첫 번째 줄 int sum(int x, int y)에서 함수명은 sum입니다.
함수의 자료형이 int이므로 함수의 실행 결과 정수 값을 반환하는 것을 의미합니다.
부르는 함수로부터 더하고자 하는 두 정수를 전달받기 위해서 두 개의 정수 변수 x와 y를 인수로 선언했습니다.
여기서 생각해볼 것이 두 수 100과 200을 더한 결괏값을 구하기 위해서 sum() 실행 함수를 이용하려면, main() 함수 내에서 두 정수 100과 200을 인수로 하는 부르는 함수인 sum(100,200)과 같이 표현하게 되면 sum() 실행 함수를 실행합니다.
이때 실행 함수가 실행되기 전에 부르는 함수로부터 실행 함수에 인수가 전달됩니다. 따라서 부르는 함수의 첫 번째 인수 100을 실행 함수의 첫 번째 인수 x에, 부르는 함수의 두 번째 인수 200을 실행 함수의 두 번째 인수 y에 할당한 후에 실행 함수를 실행합니다.
결과적으로 인수를 전달받고 나서 실행 함수는 두 수의 결괏값인 res 즉, 300을 sum(100,200)에 반환합니다.
- 부르는 함수의 의미 : 이미 작성된 특정한 기능을 수행하는 실행 함수를 수행시키는 함수
- 실행 함수의 의미 : 특정한 기능을 수행하는 프로그램의 집합을 의미
- 함수의 인수 전달과 반환 값 반환
다음은 사용자가 작성한 실행 함수를 부르는 과정과 반환하는 절차입니다.
- 함수의 인수 전달 : 부르는 함수에서 실행 함수를 인수로 전달
- 함수의 실행 : 작성된 실행 함수를 실행
- 함수의 실행 결과 반환 값이 있으면 부르는 함수에 반환 값을 전달하고 부르는 함수로 돌아감
'IT > C 언어' 카테고리의 다른 글
C언어 기억 클래스의 종류 4가지 (0) | 2020.08.21 |
---|---|
C언어 입출력 함수 - 버퍼드 입력, 버퍼되지 않는 입력 알아보기 (0) | 2020.08.19 |
C언어 연산자 종류와 우선순위 (왕초보 개념잡기) (0) | 2020.08.13 |
C언어 변수의 정의와 종류 알아보기 (0) | 2020.08.13 |
C 언어의 고유한 10가지 특징 (0) | 2020.08.07 |
댓글