ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C Language] 22. 함수(function)의 기본 - C 언어
    CSE/C Language 2015. 6. 13. 10:20

    1. 함수의 구조 

     함수의 본체는 아래와 같은 구조로 되어 있다.


     


     return_type  function_name(args)

     {

    선언자;


    수행문;

    수행문;

    ...

     }


     return_type: function_name이라는 함수가 결과 값을 구한 후, 호출한 함수에게 넘겨주는 값에 대한 자료 형(data Type)을 뜻한다.

     function_name: 말 그대로 함수의 이름이다.

     args: function_name()을 호출할 때 넘겨주는 인자(arguments)를 지칭한다.


     다음과 같은 형태로 함수를 사용할 수 있다.

      1. int swap(int x, int y)

      2. char *add(char *one, char *two)

      3. int add(int x, int y)

      4. void gugudan(int dan);





    2. 매개변수

     매개변수는 실 매개변수와 형식 매개변수로 나뉜다.

     - 실 매개변수는 호출 시 사용되는 매개변수

     - 형식 매개변수는 함수 본체에서 사용되는 매개변수



     아래 예제를 통해 실 매개변수와 형식 매개변수를 살펴보자. 

     아래 예제는 구구단의 원하는 단을 입력하여 출력하는 예제이다.


     main 에서보면 gugudan(dan) 부분에서 dan이 실 매개변수

     int gugudan(int dan) 에서의 dan은 형식 매개변수이다.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    /*
     * gogodan2.c
     *
     *  Created on: 2015. 5. 12.
     *      Author: root
     */
     
    #include <stdio.h>
     
    void gugudan(int dan);
     
    int main(void) {
     
        int dan;
     
        puts("Input number to print gugudan");
        scanf("%d", &dan);
     
        gugudan(dan);
     
        return 0;
    }
     
    void gugudan(int dan) {
     
        int i;
     
        for (i = 1; i < 10; i++)
            printf("%d x %d = %d\n", dan, i, dan * i);
     
     
    }
    cs

     



     








    3. 리턴 값

     어떤 함수를 수행하고 그 결과 값을 받을 수 있는데, 이를 함수의 리턴 값이라고 한다. 

     리턴 값은 호출한 함수에서 return 문을 사용했을 때 받을 수 있으며, 딱 하나의 값만을 받을 수 있다.


     아래 예제를 통해 리턴 값이 어떻게 쓰이는 지 알아보자.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    /*
     ============================================================================
     Name        : return.c
     Author      : 
     Version     :
     Copyright   : Your copyright notice
     Description : Hello World in C, Ansi-style
     ============================================================================
     */
     
    #include <stdio.h>
     
    int add(intint);
     
    int main(void) {
     
        int x, y;
        int result;
     
        puts("Input two number to add");
        scanf("%d %d", &x, &y);
     
        result = add(x, y);
     
        printf("Result: %d", result);
     
     
        return 0;
    }
     
    int add(int x, int y) {
     
        return x + y;
    }
    cs









    4. 함수를 작성하는 순서

     함수를 작성하는 순서는 아래와 같다.

     - 함수의 이름을 결정

     - 리턴 타입을 결정

     - 함수의 본체를 작성

     - main()에서 작성된 함수 호출



     지금부터 작성할 프로그램은 두 수를 받아 이 중에서 큰 수를 리턴하는 예제이다.


     1. 함수의 이름을 결정

     - 두 수를 입력받고 둘 중에서 큰 수를 찾아내는 함수이므로 more_than(), bigger_number(), compare_number() 등이 이름이 될 수 있다. 


     2. 리턴 타입을 결정

     - 리턴 값은 정수이므로 int로 결정한다. 그러므로 함수 선언은 int bigger_number(int, int)가 된다.


     3. 함수의 본체를 작성

     - int bigger_number(int x, int y)

       {

           if (x > y) return x;

           else if (x < y) return y;

           else if (x == y) return 0;

       }


     

    일련의 작업을 통해 함수를 작성한다. 완성된 예제를 통해 살펴보자.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    /*
     ============================================================================
     Name        : function.c
     Author      : 
     Version     :
     Copyright   : Your copyright notice
     Description : Hello World in C, Ansi-style
     ============================================================================
     */
     
    #include <stdio.h>
     
    int bigger_number(intint);
     
    int main(void) {
     
        int result;
        int x, y;
     
        printf("Input two number: ");
        scanf("%d %d", &x, &y);
     
        result = bigger_number(x, y);
     
        if (result == 0)
            puts("Two number is same.");
        else
            printf("Biggest number is %d.\n", result);
     
        return 0;
    }
     
    int bigger_number(int x, int y) {
     
        if (x > y)
            return x;
        else if (x < y)
            return y;
        else if (x == y)
            return 0;
    }
    cs






    * Programming in C 서적을 참고하여 작성하였습니다 


    댓글

Designed by Tistory.