[C언어] 008. 함수의 정의와 호출

Posted on by pkchan

함수는 어떤 구체적인 일을 수행하여 결과를 리턴해주는 코드의 한 블록을말합니다. 예를 들면 사용자에게 2개의 수를 입력받아 평균을 구하는 일이 자주 발생한다면, 이 내용을 함수로 정의하고 호출할 수 있습니다.

008-01 // STANDARD LIBRARY FUNCTIONS

#include <stdio.h>에서 불러온 stdio.h 파일에는 많은 함수가 정의되어 있습니다. 대표적으로 printf()와 scanf() 함수가 있습니다. stdio.h 파일 말고도 더 많은 라이브러리가 있고 수도 없이 많은 함수가 이미 정의되어 있습니다. 이렇게 c언어 라이브러리 형식으로 제공되는 함수를 표준 함수라고 부릅니다.

008-02 // USER DEFINED FUNCTIONS

사용자 정의 함수는 말 그대로 사용자가 정의해서 사용하는 함수를 말합니다.

Data_type functionName(data_type a, data_type b);

int main( void ) {

          ... .. ...

          functionName(a, b);

          ... .. ...

}

Data_type functionName(data_type a, data_type b) {

          //body of the function

}

C언어 컴파일러는 위에서 밑으로 순차적으로 읽으며 메인 함수를 최우선으로 실행합니다. 메인 함수를 실행 중에 사용자 정의 함수를 호출하는 functionName()을 만나면 함수를 정의하는 부분인 void functionName()을 찾아가서 실행한 후 함수가 종료되면 다시 호출하는 부분으로 돌아와서 메인 함수의 실행을 이어 갑니다. 함수의 호출이 정상적으로 이루어지기 위해서는 함수 원형 혹은 함수 정의가 메인 함수 위에 존재해야 합니다.

사용자 정의 함수의 대표적인 장점은
1. 코드를 이해하기 쉽고, 그로 인해 유지 보수가 쉬워집니다.
2. 사용자 정의 함수는 다른 프로그램에서 재사용이 가능합니다.
3. 큰 프로그램이라면 작은 모듈로 나누어 여러 프로그래머가 동시에 개발이 가능합니다.

주의할 점은 함수 호출 인자를 함수 정의 인자로 전달해줄 때 변수가 전달되는 것이 아닌 변수의 값만 전달되므로 함수 호출 인자의 자료형과 함수 정의인자 자료형은 같아야 합니다. 또한 함수를 정의할 때 지정해주는 함수의 자료형은 함수 실행 후 리턴해주는 값의 자료형과 일치해야 합니다.

008-03 // FUNCTION TYPES

1. 리턴해주는 값이 있고 함수 인자도 있는 경우

2. 리턴해주는 값이 있고 함수 인자는 없는 경우

3. 리턴해주는 값이 없고 함수 인자는 있는 경우

4. 리턴해주는 값이 없고 함수 인자도 없는 경우

008-04 // RECURSION

재귀 함수는 자기 자신을 호출하는 함수를 말합니다. 함수로 어떤 명령을 반복할 때 자주 쓰입니다. 중요한 점은 반복을 탈출하는 조건이 꼭 있어야 한다는 것입니다.

댓글 남기기