ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (C언어) 7. 함수
    C언어 문서화 2016. 3. 25. 01:54
    반응형

    <함수>

    1. 함수란?

    지금까지 배웠던 것 중에 가장 중요하다고 생각한것은 : 

    (1) : 반복문

    (2) : 배열

    이 두가지다. 하지만 오늘 알았다. 함수는 이 두개보다 더 중요하다는 것을.


    함수란 특별한 기능을 처리하도록 만들어진 프로그램의 단위를 말한다.

    함수==역할 이라고 보면 될 것 같다.


    2. 함수의 구조

    함수는 세 개의 구조로 나뉘어져있다.

    <1> 함수 호출

    <2> 함수 실행

    <3> 함수 결과 리턴

    <1>에서는 말 그대로 함수를 호출한다. 준비상태!

    <2>에서는 함수를 실행한다. 실행중!

    <3>에서는 함수 실행을 마친 뒤 그 결과값을 되돌려준다. 리턴!


    3. 지금까지 아무것도 모르고 썼던 함수

    C언어에서 printf를 해 본 사람들이라면, 그 사람들은 모두 함수를 쓰고 있다.

    이게 무슨말인가...!

    그렇다. printf는 함수이다. 이걸 왜 함수라고 하는 것일까? printf()로 함수를 호출한다고 하자. printf()에서 ""(큰 따옴표)안에 있는 것들을 리턴한다고 하자. 그럼 실행은 어디서 하는 걸까?

    바로 #include <stdio.h>이다. 여기 안에 printf()를 비롯한 scanf()등이 정의되어있다. 이런 것들을 바로 "라이브러리 함수" 라고 한다.


    4. 사용자가 직접 정의하는 함수

    아까 함수==역할이라고 했다. 하지만 이미 정해진 역할만 계속 실행하면 너무 제한적이다. 그래서 사용자가 직접 정의하는 함수가 있는 것이다.

    코드 하나를 보면서 이야기하자 : 

    정의하는 방법은 두가지이다. 사실 같은거다.

    첫번째는 [함수 원형의 선언 -> 함수 호출 -> 함수 정의] 하는 방법이다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
     
    int plus(int a, int b);
    int main(){
        int first, second;
        first = 3;
        second = 5;
        printf("%d\n", plus(first, second));
    }
     
    int plus(int a, int b){
        return a + b;
    }
    cs

    <1: 함수 원형(prototype)의 선언 : [데이터 형] [함수 이름](전달받을 인자들);

    3번 줄을 보면 이게 무슨 말인지 감은 잡힐 것이다. 자세히 보면 이 3번 줄은 11번 줄과 매우 흡사하다(거의 똑같다).

    <2: 함수 호출 : [함수 이름](전달할 인자들);

    [전달할 인자들]은 [전달받을 인자들]과 같다.

    <3: 함수 정의

    11~13번째 줄은 함수를 정의한 것이다. 여기서는 전달받을 인자가 두개(①a, ②b) 있다.

    함수 실행이 끝나면 return 옆에 있는 값을 반환시켜주는데, 여기서는 first와 second 두개의 인자가 전달되어, 그 둘을 더한 값이 반환된다.

    쉽게 말하면, plus(first, second) 요게 함수 한번 실행시키고 왔더니 8로 바뀌었다는 것이다. (사실 plus(first, second)=8이 된것이다. 똑같은말인가)


    두 번째는 [함수 원형 선언과 동시에 정의 -> 함수 호출] 하는 방법이다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    int plus(int a, int b){
        return a+b;
    }
    int main() {
        int first, second;
        first = 3;
        second = 5;
        printf("%d\n", plus(first, second));
    }
    cs

    이거는 위의 <1과 <3을 합친 것이라고 보면 된다. 이게 더 쉽고 간단해 보인다.


    5. 다시 말하지만 함수는 역할입니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdio.h>
     
    int times(int a, int b){
        return a*b;
    }
     
    int main(){
        int num_1, num_2, num_3, num_4;
            
        printf("값을 두개 입력하세요 : ");
        scanf("%d %d", &num_1, &num_2);
     
        printf("%d\n", times(num_1, num_2));
     
        printf("값을 두개 입력하세요 : ");
        scanf("%d %d", &num_3, &num_4);
     
        printf("%d\n", times(num_3, num_4));
    }
    cs

    times라는 함수를 선언했다. 그 함수의 역할은 "전달 받은 인자 두개를 곱하는 것. 그리고 그 결과를 리턴하는 것"이다. 

    즉, 어떤 정수 두개를 times에 집어넣으면 곱해져서 나오는 것이다.



    반응형

    'C언어 문서화' 카테고리의 다른 글

    (C언어) 9. 다차원 배열  (0) 2016.03.27
    (C언어) 8. 정렬 방식  (0) 2016.03.25
    (C언어) 6. 이진탐색  (0) 2016.03.25
    (C언어) 5. 문자열  (0) 2016.03.22
    (C언어) 4. 아스키코드  (0) 2016.03.22

    댓글

Designed by Tistory.