C언어 함수의 기초
요약
C언어 함수의 정의, 선언, 호출 방법을 알아봅니다. 매개변수와 반환값, void 함수, 함수 프로토타입 등 정보처리기사 실기 코딩 문제의 기초가 되는 함수 개념을 정리합니다.
함수 핵심 정리
| 개념 | 설명 | 예시 |
|---|---|---|
| 함수 정의 | 함수의 동작을 작성하는 것 | int gamja(int a, int b) { return a + b; } |
| 함수 호출 | 정의된 함수를 실행하는 것 | gamja(3, 5) |
| 매개변수 | 함수가 외부에서 받는 값 | int a, int b |
| 반환값 | 함수가 호출한 곳에 돌려주는 값 | return a + b; |
| void 함수 | 반환값이 없는 함수 | void print() { ... } |
함수란?
함수(Function) 는 특정 작업을 수행하는 코드 묶음입니다. 한 번 정의해두면 필요할 때마다 호출하여 사용할 수 있습니다.
C언어의 함수는 크게 두 종류입니다.
| 종류 | 설명 | 예시 |
|---|---|---|
| main 함수 | 프로그램의 시작점. 모든 C 프로그램에 반드시 하나 있어야 함 | int main() { ... } |
| 사용자 정의 함수 | 개발자가 직접 만든 함수. main에서 호출하여 사용 | int gamja(int a, int b) { ... } |
프로그램은 항상 main 함수에서 시작합니다. main 안에서 사용자 정의 함수를 호출하는 구조입니다.
함수 정의
함수를 정의할 때는 반환형, 함수명, 매개변수, 함수 본문을 작성합니다.
| 구성 요소 | 의미 | 예시에서 |
|---|---|---|
| 반환형 | 함수가 돌려주는 값의 자료형 | int |
| 함수명 | 함수의 이름 | gamja |
| 매개변수 | 함수가 받는 입력값 | int a, int b |
| 함수 본문 | 함수가 수행하는 코드 | return a + b; |
반환형은 어떻게 정하나?
return으로 돌려주는 값의 자료형을 함수명 앞에 적습니다.
위 예시에서 a + b는 int + int이므로 결과도 정수(int)입니다. 정수를 반환하니까 함수명 앞에 반환형을 int라고 명시합니다.
avg 함수에서 2.0은 실수(double)입니다. 정수와 실수를 함께 연산하면 결과가 실수가 되므로 반환형을 double로 지정합니다. 자세한 내용은 정수 나눗셈 vs 실수 나눗셈을 참고하세요. printf가 처음이라면 printf() - 서식 지정 출력을 먼저 읽어보세요.
| 반환형 | 의미 | return문 |
|---|---|---|
int | 정수를 반환 | return 정수값; |
double | 실수를 반환 | return 실수값; |
char | 문자를 반환 | return 문자; |
void | 반환값 없음 | return; 또는 생략 |
함수 호출
함수를 호출하면 프로그램의 실행 흐름이 해당 함수로 이동합니다. 함수가 끝나면 호출한 위치로 돌아옵니다.
실행 흐름
매개변수와 반환값
매개변수 (Parameter)
매개변수는 함수가 외부에서 값을 받기 위한 변수입니다. 함수를 호출할 때 전달한 인자 값이 매개변수에 복사됩니다.
매개변수가 없는 함수도 있습니다.
반환값 (Return Value)
return문은 함수의 실행 결과를 호출한 곳에 돌려줍니다. return이 실행되면 함수는 즉시 종료됩니다.
반환된 값은 호출한 자리에 그대로 들어갑니다.
return 이후의 코드는 실행되지 않습니다
return이 실행되면 함수가 즉시 종료되므로, 그 아래의 코드는 무시됩니다.
void 함수
void 함수는 반환값이 없는 함수입니다. 값을 돌려주지 않고, 출력이나 값 변경 같은 동작만 수행합니다.
| 반환형 | return문 | 함수 호출 결과 |
|---|---|---|
int, char 등 | return 값; 필요 | 값을 반환 |
void | return; 또는 생략 | 값 없음 |
void 함수에서 return;을 쓰면 함수를 중간에 종료할 수 있습니다.
함수 풀이 순서
시험에서 함수가 포함된 코드를 분석할 때는 다음 순서를 따릅니다.
- main 함수부터 읽기: 프로그램은 항상
main에서 시작합니다 - 함수 호출을 만나면 이동: 호출된 함수의 정의로 이동합니다
- 인자값을 매개변수에 대입: 실제 전달된 값을 매개변수에 넣고 분석합니다
- return값을 호출 위치에 대입: 반환값을 호출한 자리에 넣고 계속 읽습니다
예제
풀이 과정:
main시작 →a = 3square(a)호출 →square(3)→ 매개변수n = 3n * n= 3 * 3 = 9 반환b = 9a + b= 3 + 9 = 12
출력: 12
다음 학습
함수의 기초를 익혔다면, 다음 개념들을 학습할 수 있습니다.
- 함수 프로토타입 - 함수를 미리 선언하는 방법
- 매개변수 전달 방식 (Call by Value) - 함수에 값을 전달할 때 원본이 바뀌는지 여부
- 재귀함수 - 함수가 자기 자신을 호출하는 구조
- static 변수 - 함수 호출 간에 값이 유지되는 변수
- 변수의 유효 범위 - 변수가 어디서 접근 가능한지