함수
C 언어에서 함수(Function)는 프로그램을 논리적인 블록으로 나누어 특정 작업을 수행하도록 만든 코드의 집합입니다. 함수는 반복되는 작업을 하나의 이름 아래에 묶어서 재사용할 수 있게 하며, 프로그램의 구조를 체계적이고 간결하게 만듭니다. 특히, C 언어는 구조적 프로그래밍을 지향하기 때문에 함수를 중심으로 프로그램을 설계하는 것이 일반적입니다.
✅ 함수의 정의와 호출
함수는 선언 → 정의 → 호출의 순서로 사용됩니다. 선언은 주로 헤더 파일에 위치시키며, 정의는 실제 실행 코드를 포함합니다. 호출은 필요한 위치에서 해당 함수를 실행시키는 작업입니다.
함수 정의
함수는 다음과 같은 형식으로 정의됩니다:
반환형 함수이름(매개변수) {
// 함수 본문
return 반환값;
}
예시:
int add(int a, int b) {
return a + b;
}
함수 호출
정의된 함수는 호출하여 사용할 수 있습니다. 호출 시에는 함수 이름과 괄호 안에 인수를 전달합니다.
int result = add(5, 3);
printf("결과: %d\n", result);
이 코드는 add 함수를 호출하여 5와 3을 더한 값을 result에 저장하고 출력합니다.
📥 매개변수와 반환값
매개변수(Parameter)
매개변수는 함수 외부로부터 값을 전달받는 수단입니다. 함수 정의 시 괄호 안에 변수 형태로 선언하며, 해당 변수는 함수 내부에서 지역 변수처럼 사용됩니다.
void printMessage(char* message) {
printf("%s\n", message);
}
반환값(Return Value)
반환값은 함수 실행 결과로 반환되는 값입니다. 함수의 반환형을 지정하고 return 키워드를 사용하여 반환합니다.
int multiply(int x, int y) {
return x * y;
}
함수는 int, char, float, void 등 다양한 반환형을 가질 수 있으며, 반환형이 void인 경우에는 값을 반환하지 않습니다.
int result = multiply(4, 3);
printf("결과: %d\n", result);
📂 함수의 선언과 헤더 파일
함수 선언(Prototype)
함수 선언은 컴파일러에게 함수의 존재를 미리 알려주는 역할을 합니다. 함수 본문 없이 반환형, 이름, 매개변수만으로 구성되며, 주로 파일 상단이나 헤더 파일에 위치합니다.
int add(int a, int b); // 함수 선언
헤더 파일 사용
. h 확장자를 가진 헤더 파일은 함수 선언, 매크로 정의, 상수, 구조체 등을 모아두는 파일입니다. 여러 소스 파일에서 동일한 함수 선언을 공유할 수 있어 유지보수가 편리해집니다.
// header.h
#ifndef HEADER_H
#define HEADER_H
int add(int a, int b);
#endif
헤더 파일 포함
소스 파일에서 헤더 파일을 사용하려면 #include 지시어를 사용합니다.
#include "header.h"
int main() {
int result = add(2, 3);
printf("결과: %d\n", result);
return 0;
}
🔁 함수의 장점
- 재사용성: 동일한 코드를 여러 곳에서 사용할 수 있습니다.
- 모듈화: 코드를 기능별로 분리해 관리가 용이합니다.
- 가독성 향상: 코드가 논리적 블록으로 나뉘어 이해하기 쉬워집니다.
- 디버깅 용이: 특정 함수에서 문제 발생 시 해당 함수만 집중적으로 테스트하면 됩니다.
⚠️ 주의사항
함수를 작성할 때에는 다음 사항을 고려해야 합니다:
- 함수 정의와 호출 시 매개변수 개수와 자료형을 일치시켜야 합니다.
- 반환형이 void가 아닌 함수에서는
return을 반드시 사용해야 합니다. - 과도한 함수 분리는 오히려 복잡도를 증가시킬 수 있으므로 목적에 맞게 설계해야 합니다.
'Programming' 카테고리의 다른 글
| C 포인터 기초 (63) | 2025.08.16 |
|---|---|
| C 배열과 문자열 (36) | 2025.08.15 |
| C 다차원 배열과 포인터 (62) | 2025.08.13 |
| C 고급 포인터 (75) | 2025.08.12 |
| C 동적 메모리 할당 (80) | 2025.08.11 |