본문 바로가기

C언어_VisualStudio

#8 C / C++ 함수 기본 / 표준 함수 / 사용자 정의 함수

표준 함수, 사용자 정의 함수

오늘은 함수에 대해서 간단하게 정리하고, 그에 따라 표준 함수와 사용자 정의 함수도 간단하게 다뤄보려고 한다. :-)

 

 

함수의 정의 및 종류

  • C에서 기본적인 구성 요소 중의 하나이다.
  • 코드의 묶음으로 볼 수 있으며, 반복적으로 실행하는 코드를 묶어서 새로운 함수로 정의한다. 
  • 값을 전달 받을 수 있으며, 값을 반환할 수도 있다.
  • 함수의 종류로는 표준 함수와 사용자 정의 함수가 있다. 
  1. 표준 함수 : C에서 기본적으로 제공하는 함수
  2. 사용자 정의 함수 : 사용자가 직접 정의해서 사용하는 함수

 

함수 사용의 장점

  • 잘 만들어진 함수는 재사용(Reuse)이 가능하기 때문에 코드 관리 차원에서 좋다.
  • 함수를 사용하면 코드가 몇몇 핵심적인 기능들로 구분되는 효과를 얻을 수 있다.
  • 반복적으로 사용되는 코드를 넣을 때 편리하다 -> 코드를 함수로 묶어놓고 이름을 붙이고 필요할 때마다 불러서 사용하기 때문이다.

 

함수를 사용하기 전까지, 사실 항상 main이라는 함수를 정의해왔다.

이 안에 코드는 우리가 원하는대로 작성했기 때문에 '사용자 정의 함수'라고 할 수 있다.

 

// 예시; 숫자를 입력하고 그대로 출력

int main(void){
    int n=0;
    printf("number? ");
    scanf("%d", &n);
    printf("number: %d", n);
    return 0;
}

 

그렇다면 여기서 사용한 printfscanf는 무엇일까? 이 둘도 함수이다. 단, 이 둘은 C에서 제공하는 표준함수이다.

 

이 main함수의 실행 순서를 보자. main함수를 진행하다가 printf함수를 호출한다. printf함수가 끝나면 다시 main함수로 돌아와서 그다음 줄의 scanf함수를 호출한다. scanf함수가 끝나면 다시 main함수로 돌아와서 그다음 줄의 printf함수를 호출한다. printf함수가 끝나면 다시 main함수로 돌아와서 코드를 종료한다.

 

함수 호출도

(참고; 함수를 부를 때는 호출한다고 말한다.)

 

 

함수의 종류

 

- 표준 함수

  • C에서 기본으로 제공하는 함수들이며, 이미 만들어져 있는 함수들이다.
  • 다양한 기능들이 사전에 제작되어 있고, 사용방법에 맞추어 이용하면 된다.
  • 표준 함수를 사용하기 위해서는 해당 함수가 선언되어 있는 헤더 파일을 포함해 주어야 한다. -> printf 또는 scanf를 사용하기 위해서는 #include <stdio.h>를 반드시 적어주어야 한다.
  • 내가 필요한 기능을 수행하는 함수가 모두 구비되어 있을 수는 없다. -> 사용자 정의 함수를 이용


- 사용자 정의 함수

  • 사용자가 자신의 필요에 맞게 새로운 함수를 만들 수 있다.
  • 함수의 이름을 정하고 전달받는 값과 반환하는 값을 정의하고 함수 내부에 코드를 작성하여 만든다.
  • main함수도 사용자 정의 함수라고 볼 수 있다. -> 단 C에는 반드시 있어야 하는 함수이다. 프로그램에서 처음으로 호출되는 함수이기 때문이다. 

 

함수의 기본 형태

함수의 기본 형태

 

 

함수의 호출 방법

- 정의된 함수(표준 함수를 포함하여)는 호출하여 사용할 수 있다.

- 호출한다: 실행 순서를 호출한 함수로 옮겨 가는 것을 말한다.

    -> 이때 호출하는 함수에 값을 전달할 수 있고 실행이 끝난 함수의 반환 값을 얻을 수도 있다.

- 호출한 함수가 전달받는 값을 이용하여 정의되어 있는 기능을 수행하고 결괏값을 반환한다.

 

ex) sqrt함수

sqrt 함수를 호출하기 위해서는 <math.h>가 있어야 한다.

sqrt 함수는 소수를 전달받아 전달받는 값의 제곱근을 반환하는 함수이다.

 

#include <stdio.h>
#include <math.h> // sqrt함수를 호출하기 위해 반드시 적어주어야 한다.

// 함수의 반환값을 넣어줄 변수를 선언하여 사용하는 경우 
int main(void) {
	double result = 0.0;
	result = sqrt(25.0);
	printf("%lf\n", result);
	return 0;
}

// 직접적으로 사용하는 경우
int main(void) {
	printf("%lf\n", sqrt(25.0));
	return 0;
}

 

sqrt 함수

 

 

다양한 표준 함수

C에서는 다양한 표준 함수를 지원하고 있다.

모든 표준 함수를 알고 사용하는 것은 현실적으로 쉽지 않다. 

    -> 다음을 참고하자.

 

C언어 표준 함수에 대한 정보를 얻을 수 있는 사이트 http://www.cplusplus.com/reference/clibrary/ 

 

C library - C++ Reference

 

www.cplusplus.com