✅ 1. 함수의 개념
(1) 함수(function) 란?

- 함수란, 특정한 작업을 수행하도록 설계된 독립적인 코드 블록을 의미한다.
- 함수에 코드 블록에 정의된 코드를 사용하기 위해서는 함수를 호출하여 사용할 수 있음.
- 매개변수를 통해 함수에 데이터를 전달 할 수 있음.
- 작업을 완료하면 호출한 곳으로 복귀 즉, return 을 하게 됨.
- 복귀할 때 결과값을 반환할 수 있음.
- C 프로그램은 함수를 기본 단위로 하여 구성이 됨.
(2) 함수의 특성
[ 함수의 장점 ]
- 크고 복잡한 프로그램을 작은 크기의 의미 있는 작업 단위로 분할하여 구성할 수 있음.
- 간결하고 이해하기 쉬우며 유지 관리가 쉬워질 수 있음.
- 반복 사용되는 코드의 중복을 최소화 할 수 있음.
- 잘 설계된 함수는 다른 응용에서 재사용할 수 있음.
[ 함수의 단점 ]
- 함수 호출과 복귀 과정에서 부대비용이 추가될 수 있음.
(3) 함수의 유형
[ 표준함수 ]
- C 언어 자체에서 제공하는 함수이며, 종류는 다양하다.
- 입출력 및 파일 관련 함수
- 문자열 처리 함수
- 메모리 관련 함수
- 수학 함수
- 그 밖에 다양한 유틸리티 함수 등이 있음.
[ 사용자 정의 함수 ]
- 사용자의 필요에 따라 특정 기능을 수행하도록 정의되는 함수이다. 즉, 직접 만들어서 이용하는 것임.
✅ 2. 표준 함수
(1) 표준 함수란?
- C 언어에서 프로그램 작성에 필요한 기본 기능을 제공하기 위해 제공된 함수의 집합이다.
- 이 표준 함수는 표준 라이브러리 형태로 제공이 된다.
- 각 함수의 원형을 기능별로 헤더파일로 제공을 함.
- 함수의 원형: 함수를 사용하는 데 필요한 사항을 미리 선언하는 문장
- 쉽게말해, 미리 정의 된 함수를 사용하기 위해 함수의 이름, 매개변수, 반환값의 자료형을 코드에 넣어서 선언하는것임.
- 필요한 표준함수의 원형이 선언되어 있는 헤더파일을 미리 포함(#include)해야 함.
(2) 주요 표준함수

(3) 표준함수의 사용 예시

- C 에서 제공해주는 math 헤더 파일 내에 존재하는 함수를 호출해 활용한 예시이다.
✅ 3. 사용자 정의 함수
(1) 함수의 정의

- 위와 같은 형식으로 사용자 함수를 정의 할 수 있음. C 가 제공해주는 표준 함수 또한 내부에는 이런식으로 되있음.
- 함수 헤더: 반환 자료형, 함수명, 매개변수 리스트를 차례로 작성 ( 블록 위에 함수 정의 내용 부분 )
- 함수 몸체: 함수가 처리할 작업을 정의하는 문장을 나열 할 수 있음. ( 블록 내부를 의미 )
(2) 함수의 호출 및 반환

- 함수의 이름과 인수를 제공하여 호출 할 수 있으며, 반환 타입을 알맞게 정해서 받아줘야 함. return 타입
- 실 매개변수: sum(x, y) 부분의 함수를 호출 할 때 넣는 매개변수를 의미함
- 형식 매개변수: sum(int a, int b) 부분의 함수를 호출하면 들어가는 함수의 매개변수를 의미함.
- 함수 헤더에 자료형을 넣게 되면, 해당 자료형에 맞도록 return 을 써서 결과값을 반환 할 수 있음.
- 그러면, 호출하는 쪽에서 올바른 자료형에 맞는 변수로 값을 받아야 함.
(3) 함수의 원형
#include <stdio.h>
int sum(int a, int b); // 함수의 원형
int main() {
int result = sum(1, 2);
printf("%d", result);
}
int sum(int a, int b) {
return a + b;
}
- 함수의 원형은 함수를 실제로 정의하기 전에, 컴파일러에게 사용 할 함수를 미리 알려주는 선언문임.
- 예시 코드를 보면, main() 함수 밑에 sum() 함수가 정의되어 있기 때문에 main() 함수에서는 sum() 을 호출해도 sum() 이 정의가 되어있지 않으므로 모름 즉, 컴파일 오류가 뜰 수 있음.
- 하지만, int sum(int a, int b); 와 같이 함수의 원형인 함수의 선언문을 작성하게 된다면 해당 함수가 어느 코드라인에 있던 호출이 가능해짐.
#include <stdio.h>
int sum(int a, int b) {
return a + b;
}
int main() {
int result = sum(1, 2);
printf("%d", result);
}
- 반대로 생각해보면 sum() 함수가 main() 함수 위에 정의가 되어있다면, 함수의 원형 -> 선언문 없이 호출이 가능함.

- 또한, 헤더 파일(mymath.h)에는 인터페이스 처럼 함수를 정의해 둘 수 있고, 구현 c 확장자를 가지는 구현 파일(mymath.h)을 만들어서 해당 함수를 정의 해서 사용을 할 수 있음.
- 이때, main() 함수에서는 mymath.h 헤더 파일을 include 함으로써, 함수 선언문을 가지고와서 함수를 사용 할 수 있음.
- 만약 mymath.c 와 같이 구현 파일이 존재하지 않는다면 main() 함수에서 직접 구현을 해줘야함.
- mymath.c 와 같이 구현 파일이 존재하면 main() 에서는 단순히 mymath.h 의 선언된 함수만 호출하면 됨.
✅ 4. 정리하기
- 함수는 함수 헤더와 몸체 블록으로 구성이 됨.
- 함수의 헤더에는 반환타입, 함수명, 매개변수를 정의해야 함.
- 함수의 몸체 블록에는 함수의 코드를 작성하면 됨. 반환 타입이 있는 경우 return 값을 올바르게 넘겨줘야함.
- 모든 함수는 사용되기 전에 미리 선언을 해야함. 이 선언문이 함수의 원형으로 볼 수 있음.
- 하나의 프로그램 내에서는 2개 이상의 함수가 동일한 이름을 가질 수 없음.
'공부 > ⚙️C' 카테고리의 다른 글
| [C언어] 배열과 포인터(1) (0) | 2025.10.16 |
|---|---|
| [C언어] 함수와 기억 클래스(2) (0) | 2025.10.15 |
| [C언어] 선택 제어문과 반복 제어문 (0) | 2025.10.13 |
| [C언어] 입출력 함수와 연산자(2) (0) | 2025.10.03 |
| [C언어] 입출력 함수와 연산자(1) (0) | 2025.09.05 |