ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 함수의 정의와 선언
    c언어 기초 2017. 3. 28. 17:42

    1. 함수를 정의하는 이유

    • 모듈화에 의한 프로그램의 질 향상이 가능
    • 유지 보수 및 확장의 용이성
    • 문제 해결의 용이성 : "Divide and Conquer!"


    2. 4가지 형태의 함수

    • 전달 인자 有, 반환 값 有
    • 전달 인자 有, 반환 값 無
    • 전달 인자 無, 반환 값 有
    • 전달 인자 無, 반환 값 無
    - 입력이 없는 경우  int foo(void)
    - 출력이 없는 경우  void foo(int)
    - 입력과 출력이 모두 없는 경우   void foo(void )


    3.main 함수 다시 보기 : 함수의 기본 형태


    4. 함수의 정의와 선언


    4-1.

    전달 인자와 반환 값, 둘 다 있는 함수




    4.2 함수 호출 과정의 이해

    #include <stdio.h>

    int Add(int i, int j)

    {

        int result = i + j;

        return result;

    }

    int main(void)

    {

        int d;

        d = Add(3, 4);

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

        return 0;

    }

     




    4.3 함수 선언의 필요성

    컴파일러의 특성상, 함수는 호출되기 전에 정의되어야 한다. 





    4.4 함수 선언의 의미

    이후에 정의될 함수에 대한 정보 제공



    4.5 변수의 범위(scope)

    * 변수의 특성에 따른 분류

    지역 변수(Local Variable) 

    중 괄호 내에 선언되는 변수


    * 전역 변수(Global Variable)

    함수 내에 선언되지 않는 변수


    * 정적 변수(Static Variable)

    함수 내부, 외부 모두 선언 가능


    * 레지스터 변수(Register Variable)

    선언에 제한이 많이 따름


    4.5.1 지역 변수의 접근 범위

    지역 변수는 선언 된 함수 내에서만 접근 가능


     int fct_one(void)

    {

         int one=0;

           

         return 0;

    }


        <- 범위 1

    int fct_two(void)

    {

         int two=0;

         int one=0;

           

         return 0;

    }


       <- 범위2 


    * 지역 변수의 메모리상 존재 기간


    - 1단계 


     int fct_one(void)

    {

         int one=10;

         return 0;

    }

    int fct_two(void)

    {

         int one=20;

         int two=30;

         return 0;

    }

    int main(void)

    {

         int val=10;

         fct_one();

         fct_two();

         return 0;

    }


     




    - 2단계 



    - 3단계




    - 4단계




    4.5.2 전역 변수

    - 프로그램 어디에서나 접근이 가능한 변수
    - 특정 영역(함수, 반복문...)에 속하지 않는다.
    - 프로그램이 종료될 때까지 존재

    전역 변수의 또 다른 특징
    - 같은 이름의 지역 변수에 의해서 가려지기도 한다. 


    static 변수

    함수 내부 및 외부에 선언 가능하다.

    한번만 초기화된다 : 전역 변수의 특징

    함수 내부에서 선언될 경우 함수 내에서만 접근이 가능하다 : 지역 변수의 특징

    예제 static_val.c


    보다 빠르게! register 변수

    int main(void)
    {
       int a ;
       register int b; // 레지스터 변수 b 선언
       . . . . .


    /* static_val.c */

    #include <stdio.h>


    void fct(void);


    int main(void)

    {

         int i;

         for(i=0; i<5; i++)

              fct();


         return 0;

    }


    void fct(void)

    {

         int val=0; // static int val=0;

         val++;

         printf("%d ",val);

    }





    'c언어 기초 ' 카테고리의 다른 글

    1차원 배열  (0) 2017.03.30
    재귀 함수  (0) 2017.03.28
    for/무한루프/continue/break문  (0) 2017.03.22
    do - while문  (0) 2017.03.22
    switch에 의한 선택 실행  (0) 2017.03.20

    댓글

Designed by Tistory.