ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20140321 (함수, 지역변수)
    부산IT학원/스마트컨트롤러 2014. 3. 21. 16:05

    25일차

     

    --------------------

    Function ( 함  수 )

    --------------------

    - 어제 보았듯이 어떤 기능을 하는 역할.

    - int Add(); 이런 형태는 함수의 원형( prototype, interface ) 라고 한다.

    - int Add() { A } 이런 형태는 함수의 정의이다.

    뭐 설명은 어려운데 예제를 보면 쉽다.

    예제를 보자.

    #include <stdio.h>

    int Add(int iNum1, int iNum2);  // 함수 선언, 원형

    /*
    int Add(int iNum1, int iNum2)    // 이렇게 main 위에 와도 괜찮다.
    {        // 선언, 정의? 다 같이 한다?
      int iResult = iNum1 + iNum2;

      return iResult;
    }
    */


    int main()
    {
      int  iNum;

      iNum = Add(1020);
      printf("%d \n", iNum);

      return 0;
    }

    int Add(int iNum1, int iNum2)    // 함수 정의
    {
      int iResult = iNum1 + iNum2;

      return iResult;
    }

    프로그램 진행 순서가

    이렇게 흘러간다.

    10, 20 이란 인수를 받아서 Add 함수에서 그 값만 받는다.

    받은 값을 iResult에 넣어서 반환한다.

     


     

    위에서 본 바와 같이

    어떤 일정한 반복된 코드나,

    역할을 나눌때

    함수를 만들어 사용한다.

     

     

     

    여기서 잠깐,

    printf, scanf 등등 가져다 쓰는 함수들을 모아서

    라이브러리 라고 부르고 컴파일 과정 중 링크때 연결된다.

     

    우리가 만든 함수는 전처리 과정 중에 불러온다.

     

     

     

     

     

     

    -------------

    지역변수

    -------------

    - { 에서 } 까지가 지역변수의 수명.

    ex) 예제 소스

    #include <stdio.h>

    main()
    {
      int iNum;    // main 의 지역변수 iNum

      iNum = 0;

      if(0 == iNum)
      {
        int iNum = 1;    // if 의 지역변수 iNum
      }                      // if 의 지역변수 iNum 소멸

      printf("iNum : %d \n", iNum);    // main 의 지역변수 iNum

      while(2 > iNum)    // main 의 지역변수  iNum
      {
        int iTemp = 0;    // while 의 지역변수 iTemp 생성
                              // while문이 반복할 때마다 iTemp 생성, 소멸 반복
        ++iTemp;
        ++iNum;
        
        printf("iTemp : %d \n", iTemp);
        printf("iNum : %d \n", iNum);
      }                      // while문 지역이 끝나면서 iTemp도 소멸

      {
        int iNum = 0;    // 이름없는 지역의 지역변수 iNum

        
        iNum = 1000;
      }                     // 지역이 끝나면서 iNum도 소멸

      printf("iNum : %d \n", iNum);    // main 의 지역변수 iNum

      return 0;
    }

    출력 화면

    위에서 보았듯이 지역변수끼리 이름만 같았지

    서로 다른 주소를 사용하기 때문에 서로 영향을 끼칠 수 없다.

    변수 이름이 같을 경우

    더 작은 지역의 변수의 이름을 사용하고

    없을 경우 한층 위 지역의 변수를 사용한다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

Designed by Tistory.