본문 바로가기
Basic/C/C++

[C언어] 제 6 강 : 함수

by boxbop 2012. 1. 11.
반응형

 엊그제 부터 감기 때문에 죽겠네요 ㅠㅠㅠㅠ
이번주는 그냥 쉴까 했지만 한번 쉬면 쭉~~~쉴까 두려워 포스팅을 결심했습니다. 오늘 공부해볼 내용은 함수입니다. C언어를 포함한 프로그래밍 언어의 이해를 위해서는 함수는 빠질 수 없는 부분입니다.

 함수를 구성하는 기본적인 사항으로는
1. 함수의 이름 2. 함수의 입력 3. 함수의 출력 4. 함수의 기능
총 4가지가 존재합니다. 이러한 기본적인 사항이 모여 함수를 만들어내죠.

 int fuction (int n)
{
    n++;
    return n;
 }

 위와 같은 예제를 보겠습니다. 바로 저것이 함수입니다~ 함수의 4가지 사항을 모두 포함하고 있는 짧고 중요한 예제입니다. {, } 중괄호 안에 함수의 기능을 표현합니다. fuction 이라는 이름이 함수의 이름이구요. 함수이름 오른쪽의 (int n)은 함수의 입력 부분입니다. 입력받은 값을 증가시켜주는 n++는 함수의 기능입니다. 마지막으로  return n 은 함수의 출력을 담당합니다. 입력받은 n의 값을 증가시켜 반환시켜준다는 의미이죠. 입력값이 int 형이기때문에 fuction이라는 함수는 int형 변수를 입력받습니다. 그리고 int fuction (int n)에서 fuction이라는 함수를 int형 이라고 정의했기때문에 출력값도 int형이 되는 거구요~ 만약 출력값을 double 형이라고 한다면 double fuction (int n)이라고 정의하면 되구요 입력받고 싶은 값을 double형을 정의하려면 int fuction (double n)이라고 정의 하면 됩니다. return n은 2가지 의미를 가지고 있습니다. 첫 번째로 함수의 종료, 두 번째로는 값의 반환입니다. n값을 반환하면서 함수의 종료를 의미하죠~ 사람은 죽어서 이름을 남기고 동물은 죽어서 가죽을 남기지만 함수는 죽어서 값을 남김니다~~ㅋㅋㅋㅋ 위의 예제를 다시한번 정리해보겠습니다.

반환형   함수의 이름    매개변수 선언
 int            fuction       (int n)
{
  함수의 시작
    n++; 함수의 기능
    return n; 값의 반환
 } 함수의 종료

어때요 이해가 좀 가시나요~? 그리고 입력값을 보통 '인자'라고 합니다.그럼 이제 이러한 함수를 어떻게 활용하는지 살펴보도록 하겠습니다.

int num= 1;
num = fuction (num);

 num에 저장되는 마지막 값은 얼마일까요~? 정답은 2입니다. int형 변수 num에 초기값 1을 대입하고 fuction (num)에서 함수가 호출됩니다. 함수를 사용해 num값을 1 증가시키고 그 값을 다시 num에 저장하게 됩니다.

 입력과 출력이 없는 함수도 정의가 가능합니다. 자주 사용되므로 익혀두도록 합시다.

 void text_print (void)
{
    printf("Hello boxbop world!!");
 }

 이러한 예제는 반환형, 인자 모두 존재하지 않습니다. 이럴때 void 선언을 해주는 것 입니다.

int main(void)
{
    text_print();
}

 요렇게 소스코드를 작성해주면 출력값은 "Hello boxbop world!!"라고 출력이 되겠죠?

 함수의 규칙 중 하나는 입력값은 많아도 좋지만 출력 값은 오직 하나라는 점 입니다. 인자는 1개 이상이 되지만 return하는 출력값은 오직 하나만 존재해야된다는 점입니다.

int Add(int n1, int n2)
{
    int result = n1 + n2;
    return result;
 }

 Add라는 함수를 보시면 인자는 2개가 존재하지만 결과값은 두개의 인자를 더한 result값 하나만 존재합니다. 그리고 함수 내에서 또 다른 함수를 호출할 수 있습니다.

void text_print (void)
{
    printf("Hello boxbop world!!");
    printf("%d", Add(1,2));
 }

 이런식으로 text_print 함수 내에 Add 함수가 사용되기도 하죠^-^ 함수가 어떤건지는 이해가 가셨나요~? 그렇다면 실제로 함수를 소스코드 내에서 사용하는 방법을 알아보도록 하겠습니다.

 함수는 호출되기 이전에 정의되어야 합니다! 이 부분이 가장 중요한 규칙이네요~ㅋㅋㅋ 모든 프로그램은 main함수 내에서 구현되기 때문에 사실상 main함수가 실행되기 이전에 함수들을 정의하고 구현해주어야 합니다.

 예를들어 우리가 구현한 함수 -> 메인함수 순서이면 메인함수 이전에 우리가 구현한 임의의 함수를 정의했기때문에 컴파일 에러를 발생하지 않습니다. 그러나 메인함수 -> 우리가 구현한 함수 순서이면 당연히 에러를 발생하겠죠?

 일반적인 순서는 함수의 선언 -> 메인함수 -> 함수의 구현 입니다.

#include <stdio.h>

 int fuction (int n);          // 함수의 선언
 void text_print (void);


int main (void)              // 메인 함수
{
    ....메인함수....
    ....함수의 사용....

   return 0;
 }

 void text_print (void)      // 함수의 구현
{
    printf("Hello boxbop world!!");
 }
 int fuction (int n)
{
    n++;
    return n;
 }

 요렇게 사용하시면 됩니다^-^ 함수의 구현을 메인함수 이전에 코딩해버리면 함수가 길어질수록, 종류가 많을수록 메인함수는 저 밑에 위치하게 되겠죠? 그래서 먼저 이러한 함수가있다~~~~ 라고만 선언을 해주고 메인함수 이후에 함수를 구현합니다.

 함수에 대한 내용은 여기까지만 하도록 하겠습니다~~~^-^;; 조금은 대충? 설명한 감이 드는군요... 다들 감기조심하세요 ㅠㅠㅠ

 


반응형