728x90
함수는 프로그램을 구조적으로 만들고, 중복을 줄이며, 코드를 재사용할 수 있게 해주는 기본 단위입니다. 이 문서에서는 함수의 정의, 선언, 호출 방식과 매개변수 및 반환값 처리까지 C 언어 기준으로 자세히 설명합니다.
1. 함수란 무엇인가?
- 함수는 코드의 조각으로, 특정 작업을 수행하기 위한 독립된 블록입니다.
- 복잡한 프로그램을 작고 관리하기 쉬운 단위로 나누기 위해 사용됩니다.
- 코드 중복을 피하고, 재사용성을 높이며, 모듈화된 설계를 가능하게 합니다.
- 함수는 0개 이상의 매개변수를 받을 수 있으며, 값을 반환할 수도 있습니다.
2. 함수의 구성 요소
C 언어에서 함수는 다음의 구성요소로 이뤄집니다:
함수 선언 (함수 프로토타입)
- 함수가 어떤 이름, 반환형, 매개변수를 가지는지를 컴파일러에게 알려줍니다.
- 함수 정의보다 먼저 작성되어야 합니다 (또는 헤더 파일로 분리).
함수 정의
- 실제로 함수가 어떻게 동작하는지 구현하는 부분입니다.
함수 호출
- 정의된 함수를 사용하여 작업을 수행합니다.
3. 함수 정의 형식과 매개변수 구성
C 언어에서 함수는 "어떤 값을 받아 어떤 동작을 하고 어떤 값을 반환하는가"를 기준으로 정의됩니다. 함수의 기본 구조는 다음과 같습니다:
<반환타입> <함수이름>(<타입> <변수명>, <타입> <변수명>, ...) {
// 함수 본문 (실행할 코드)
return 반환값; // 반환타입이 void일 경우 생략 가능
}
- 괄호 안에는 0개 이상의 매개변수 목록이 들어갑니다.
- 각 매개변수는 타입과 변수 이름으로 구성되며, 쉼표로 구분됩니다.
- 매개변수가 없는 경우 () 또는 (void)를 사용합니다.
함수 정의 예시
int add(int a, int b) {
return a + b;
}
📌 위 예시 설명:
- int: 함수의 반환 타입 (정수형 값 반환)
- add: 함수 이름
- (int a, int b): 정수형 매개변수 두 개를 받음
- return a + b;: a와 b의 합을 반환
함수의 구조를 명확하게 작성하면 호출하는 쪽에서도 어떤 값을 전달하고 어떤 결과를 기대할 수 있는지 쉽게 파악할 수 있습니다. 따라서 반환 타입과 매개변수 목록은 함수 인터페이스에서 가장 중요한 부분입니다.
4. 반환값이 없는 함수 (void)
void는 반환값이 없음을 의미합니다. 주로 단순 출력이나 동작 수행 함수에 사용됩니다.
예시
#include <stdio.h>
void say_hello() {
printf("Hello, world!\n");
}
int main() {
say_hello(); // 함수 호출
return 0;
}
5. 함수 선언(프로토타입)과 정의 분리 예시
// 선언 (보통은 헤더 파일에 위치)
int multiply(int x, int y);
// 정의 (보통은 소스 파일에 위치)
int multiply(int x, int y) {
return x * y;
}
int main() {
int result = multiply(3, 4);
printf("3 x 4 = %d\n", result);
return 0;
}
6. 반환값이 있는 함수 예시
float average(float a, float b) {
return (a + b) / 2.0f;
}
7. main 함수의 역할
- 모든 C 프로그램은 main() 함수부터 실행이 시작됩니다.
- int main()은 정수값(종료 상태)을 운영체제에 반환합니다.
int main() {
// 프로그램 실행 코드
return 0;
}
8. 함수 사용 시 주의할 점
- 함수는 정의되기 전에 선언되어야 합니다.
- 반환 타입을 생략하지 마세요. 생략하면 기본형(int)으로 간주되어 예기치 않은 동작을 유발할 수 있습니다.
- 매개변수 타입도 반드시 지정해야 합니다 (C89/C90 기준).
9. 요약 정리
구분설명
함수 선언 | 컴파일러에게 함수 시그니처를 미리 알려줌 |
함수 정의 | 함수가 수행할 동작 구현 |
반환 타입 | void, int, float, bool 등 지정 가능 |
매개변수 | 0개 이상 가능. 각 인자의 타입 명시 필요 |
main 함수 | 프로그램 시작점. int main() 권장 |
이 문서는 C 언어의 함수 문법을 완벽하게 이해하고, 함수 기반 구조화를 실무에 활용하는 데 도움을 주기 위해 작성되었습니다. 함수는 코드 품질과 유지보수성을 동시에 향상시키는 강력한 도구입니다.
728x90
'개발이야기 > C언어' 카테고리의 다른 글
[C언어] 배열 (0) | 2025.06.15 |
---|---|
[C언어] 스택 (0) | 2025.06.15 |
[C언어] 부울(Boolean) 값과 조건식 (0) | 2025.06.14 |
[C언어] 조건문과 반복문 (0) | 2025.06.14 |
[C언어] 언어 표준 입출력 함수 (1) | 2025.06.14 |