C 언어에서 함수는 크게 두 가지 유형으로 분류됩니다.
- 라이브러리 함수(사전 정의 함수)
- 사용자 정의 함수
라이브러리 함수(Predefined / Library Functions)
- 시스템 라이브러리에 이미 정의되어 있는 함수입니다.
- 프로그래머는 라이브러리에 있는 기존 코드를 그대로 재사용할 수 있어 오류 없는 코드를 작성하는 데 도움이 됩니다.
- 함수를 사용하려면 해당 함수의 문법(원형)을 알고 있어야 하며, 관련 헤더 파일을 포함해야 합니다.
예를 들어, sqrt() 함수는 math.h 헤더 파일에 정의되어 있으며, 사용 방법은 y = sqrt(x) 형태입니다. 이때 x는 반드시 양수여야 합니다.
x가 25라면 y = sqrt(25)이므로 y는 5가 됩니다.
마찬가지로 printf()는 stdio.h 헤더 파일에, clrscr()은 conio.h 헤더 파일에 정의되어 있습니다.
예제 프로그램
#include<stdio.h>
#include<conio.h>
#include<math.h>
main() {
int x, y;
clrscr();
printf("enter a positive number");
scanf("%d", &x);
y = sqrt(x);
printf("squareroot = %d", y);
getch();
}실행 결과
Enter a positive number 25 Squareroot = 5
사용자 정의 함수(User Defined Functions)
- 프로그래머 또는 사용자가 직접 정의해야 하는 함수입니다.
- 프로그래머가 해당 함수의 코드를 직접 작성하고, 사용하기 전에 충분히 테스트해야 합니다.
- 함수의 문법을 사용자가 직접 정의하므로 별도의 헤더 파일을 포함할 필요가 없습니다.
예를 들어 main(), swap(), sum() 등이 대표적인 사용자 정의 함수입니다.
예제 프로그램
#include<stdio.h>
#include<conio.h>
main() {
int sum(int, int);
int a, b, c;
printf("enter 2 numbers");
scanf("%d %d", &a, &b);
c = sum(a, b);
printf("sum = %d", c);
getch();
}
int sum(int a, int b) {
int c;
c = a + b;
return c;
}실행 결과
Enter 2 numbers 10 20 Sum = 30
정리
라이브러리 함수는 컴파일러와 함께 제공되는 헤더 파일에 미리 구현되어 있어 즉시 호출하여 사용할 수 있으며, 개발 시간을 단축하고 안정성을 높여 줍니다. 반면 사용자 정의 함수는 개발자가 필요에 따라 직접 설계하고 구현하는 함수로, 프로그램의 목적에 맞는 기능을 자유롭게 만들 수 있다는 장점이 있습니다. 두 유형의 함수를 적절히 활용하면 코드의 재사용성과 가독성을 모두 향상시킬 수 있습니다.