[C언어] 함수의 작성과 사용

ET의 공부/C언어|2020. 12. 20. 15:39

함수(function)

C언어에서 함수(function)란 특정 작업을 수행하도록 독립적으로 설계된 코드의 한 단위입니다. 예를 들어 printf()는 화면에 데이터를 출력해주는 함수입니다. 왜 함수를 사용해야 할까요? 가장 큰 이유는 반복적인 프로그래밍을 피할수있기 때문입니다. 복잡한 수식을 여러번 계산하는 프로그램을 작성한다면 해당 수식을 계산하는 함수 하나만을 사용해서 처리를 할수있습니다. 또한 함수를 사용하면 프로그램이 모듈화되어 가독성이 증가하며, 변경 또는 에러를 수정하기 쉬워집니다.

 

함수의 작성과 사용

#include <stdio.h>

void drawbar(void); //함수 프로토 타입

int main () {
    drawbar();
    printf("*모양 막대를 그렸습니다.\n");
    drawbar();
    return(0);
}

void drawbar(void){  //함수 정의
    int i = 0;
    for(i = 0; i<20; i++){
        printf("*");
    }
    printf("\n");
}
//실행 결과
//********************
//*모양 막대를 그렸습니다.
//********************

 

위의 코드에서 사용된 함수는 drawbar()로 '*'모양을 20개의 막대로 그리는 함수입니다. 코드를 자세히 보시면 drawbar()라는 함수는 총 세군대에서 사용하고 있습니다.

 

-void drawbar(void);  ==> 어떤 유형의 함수인지 컴파일러에게 알려주는 함수 프로토 타입

-drawbar();  ==> 함수를 실행하는 함수 호출

-void drawbar(void){ for(...  ) {...} }  ==> 함수를 구현하는 함수 정의

 

또한 변수들을 사용할때 정수형은 int , 실수형은 float 자료형을 사용하는 것처럼 함수도 데이터형을 갖습니다. 함수를 사용하기전에 해당 함수의 데이터형을 미리 선언해야합니다. 선언은 main() 함수 정의보다 앞에 오게되기 때문에 void drawbar(void); 는 main() 앞에서 선언됩니다.  여기서 void 가 두번 사용되었는데 첫 번째 void 가 함수의 데이터 형입니다. void 자료형은 그 함수가 값을 리턴하지 않는다는 의미입니다. 두 번째 void 는 이 함수가 전달인자를 사용하지 않는다는 것을 나타내며 세미클론(;)은 이 코드가 함수를 정의하는 것이 아니라 선언하고 있다는 뜻입니다.

 

때론 오래된 컴파일러의 경우 void 자료형을 인식하지 못하므로 int drawbar(); 라는 선언을 해주어야 합니다.

 

-여기서는 drawbar()의 선언을 main()문 앞에 선언했지만 main()문안에서 선언하여도 무방합니다.

-일반적으로, 함수 선언시 함수 반환값의 데이터형과 전달인자의 형을 모두 명시합니다. 하지만 이번 포스팅의 예제에서는 리턴값도 전달인자도 없는 함수입니다.(void)

 

 

drawbar()안에 있는 변수 i는 지역(local)변수 입니다. 이는 변수 i는 drawbar()안에서만 사용된다는 뜻입니다. main()문 뿐아니라 향후 추가될 함수에서도 동일한 이름의 i라는 변수를 사용할수 있습니다.

 

다음엔 전달인자를 갖는 함수의 사용법으로 찾아뵙겠습니다. 감사합니다.

댓글()