소프트웨어/C 언어

[C언어]06. 프로그램의 기능을 만드는 법, 함수에 대하여 알아보자

리습 2013. 6. 4. 08:00


 안녕하십니까. 리습입니다.


 지금까지는 배운 것은 메인 함수를 만들고 프로그램을 실행시키는 것과 기본적인 데이터를 저장할 수 있는 변수를 만드는 것들입니다. 하지만 이런 것들로는 부족하다 라는 것을 느끼실 것입니다. 프로그램이라는 것은 기본적으로 어떤 기능을 하는 것이기 때문에 우리는 기능을 만들 필요가 있습니다.  C언어에서도 이러한 기능을 만드는 것을 지원하며, 그것을  '함수' 라고 부릅니다. 그렇다면 이러한 함수를 만드는 법과 사용법에 대하여 알아보도록 하겠습니다.

 

 우선 알아야 할 것이 있습니다. 지금까지 기능이라고 불리어 왔던 것들은 모두 '함수'라는 것입니다. 영어로 function 이라고 하며  우리말로 '기능, 함수' 라는 뜻을 가지고 있으며 여기선 기능이란 의미로 사용되지만, 관용적으로 우리는 이를 함수라고 번역해왔기 때문에 앞으로 우리는 함수라 명명하도록 하겠습니다. (전 기능이라는 번역을 더 좋아하긴 합니다.)

 

기본적인 함수의 형태를 보도록 하겠습니다. 


1. 함수에서 내보낼 데이터 형식 : 함수에서 어떠한 데이터를 내보내 줄것인지 나타는 표시 입니다. 우리가 저번에 배웠던 변수가 내보낼 데이터의 형식입니다. 즉 맨 앞에 int, char 등을 나타내면 됩니다. 만약에 함수에서 내보낼 데이터가 없을 경우 void 로 나타냅니다.

                                             

ex) int <함수의 이름> ( <함수에서 입력받을 데이터> )

 

2.  함수의 이름 : 만들어낼 함수의 이름을 결정합니다. 이름은 자유롭게 만들 수 있습니다. 단! 기존에 c언어에서 쓰는 단어 (키워드) 들은 피해야합니다.

                       

ex) <함수에서 내보낼 데이터 형식 > wemakefunc ( <함수에서 입력받을 데이터> )

 

3. 함수에서 입력받을 데이터 : 함수에서 입력받고 싶은 데이터의 형식과 이름을 결정합니다. 데이터의 형식이므로 변수를 사용하면됩니다.  이때 받고싶은 데이터의 형식과 이름은 괄호 () 로 감싼다. 여러개를 쓸때에는 , 를 사이에넣고 계속씁니다.  아무것도 입력받지 않을땐 void라 입력합니다.

                                        

ex) <함수에서 내보낼 데이터 형식> <함수의 이름> ( int a , char b, double c )

 

4. 함수의 내용 : 함수의 내용에는 말 그대로 함수의 기능을 설명하는 것입니다. 어떠한 일을 하고 싶은지 나타내 주면 됩니다.

 

5. return <어떤데이터> : return은 함수를 끝낸다는 의미입니다. 끝내고 나서 어떠한 데이터를 내보내 주고 싶은지 적으면 됩니다.

                                  

ex) return 10;

 

 함수는 기본적으로 이런 형태를 가지게 됩니다.  처음 형식과 함수의 이름, 입력받을 것들 을 알려준후 {} 안에 함수가 할일을 적어주는 것입니다. 그렇다면 전체적인 예를 하나 보도록 하겠습니다.

 

 코

 int     sum     (int a , int b)

 {

int result;

result = a + b;

return result;

 }

 

 맨 위 첫줄은 int sum (int a , int b)로 되어 있습니다. 즉 "이 함수는 끝낼 때 int 형식의 데이터를 내보내며 이름은 sum이다 또한 2개의 데이터를 함수사용시 입력 받는데 그 형식과 이름은 int a , int b 이다." 라고 읽으면 됩니다.

두번째 줄부터 { } 사이의 내용은 어떻게 sum 이라는 함수가 작동하는지 설명하고 있습니다. "sum함수는 더하는 기능을 구현한 함수이며 int 형식의 변수 result에 입력받은 두 변수 a, b를 더해서 넣고  그 result 값을 함수를 끝낼때 내보내 준다." 라고 읽으면 됩니다.

 

 그런데 우리가 직접 만든 함수를 사용하기 위해서는 컴파일러 에게 내가 만든 함수를 알려 줘야 합니다.  main은 프로그램의 시작 점이므로 main 전에 알려줘야 하는데 그 방법은 다음과 같습니다.

 

 코

 #include <헤더>

 <함수에서 내보낼 데이터 형식>  <함수의 이름>  ( <함수에서 입력받을 데이터> ) 

 int     main     (void)

 {

    /* 함수의 내용 */

     return 0; 

 }

 

 <함수에서 내보낼 데이터 형식>  <함수의 이름>  ( <함수에서 입력받을 데이터> ) 

 { 

      //함수의 내용//

      return <어떤 데이터>

 }

 

  

 main 전에 어떤 함수를 쓸 것인지 그 형식과 이름, 데이터를 명시합니다. 함수의 맨 첫째줄을 그대로 복사 붙여넣기 한다고 생각하면 쉬울 것입니다. 이러한 형태는 우리가 앞으로 만들 프로그램의 가장 기본적인 형태이므로 익숙해 지는것이 좋습니다. 그렇다고 굳이 외울 필요는 없습니다.

 

 그렇다면 이제 이런 함수를 사용해서 실제 프로그램을 만들어 보도록 하겠습니다. 이번에 만들어볼 프로그램은 미리 입력한 두 값을 더하기, 곱하기를 하여 내보내 주는 프로그램입니다.

 

 코드

 #include <stdio.h>

 

 int sum (int a , int b);

 int mul (int a , int b);

 

 int main ( void )

 {

//변수를 선언하는 위치

int f = 23;

int s = 343;

int result;

 

//더하기 후 화면 출력

result = sum ( f , s );

printf("%d \n", result);

 

// 곱하기 후 화면 출력

result = mul ( f, s);

printf("%d \n", result);

 

//끝

return 0;

 }

 int sum (int a , int b)

 {

          int result = a + b;

return result;

 }

 int mul (int a , int b)

 {

          int result = a * b;

return result;

 }

 


여기서 한가지 의문이 들것입니다. main 도 함수와 형태가 같다? 는것말입니다. 맞습니다. main또한 함수이며 프로그램에서 단지 맨 먼저 실행되는 함수 인것 뿐 입니다. 그렇기 때문에 이름도 정해져 있고 (main으로) 우선적으로 써주는 것입니다.

 

 이렇게 우리는 프로그램에 기능을 만드는 법 을 배워 보았습니다. 함수를 만드는 방법, 사용하는 방법은 더 많이 있지만 그것은 차근차근 나중에 보도록 하겠습니다.