목차
- 함수의 정의
- 함수의 선언과 정의, 호출과 반환
1. 함수의 정의
그동안은 main 함수 하나로 프로그램을 만들었습니다.
하지만 그러다보니 문제가 있어요. main함수가 너무 대책없이 길어집니다.
프로그램의 전체 기능을 쪼개서 실행시켜 보죠.
기본적으로, 함수를 만드는 방법은 main함수를 만드는 방법과 별로 다르지 않아요.
main 함수의 기본 구조가
int main()
{
return 0;
}
인 걸 기억하시나요?
int main()은 다음과 같은 뜻입니다.
main을 실행하기 위해 변수 ()을 받는다.
출력은 int값으로 출력한다.
주구장창 나오던 return 0;의 정체가 드러납니다. 함수의 결과를 출력하는 것이죠.
사실 C99 이후로는 저걸 안 넣어도 되긴 하는데, 사용해야 하는 곳이 있을 수도 있으므로 넣어주는 것이 좋아요.
변수 ()을 받는 곳은 비어있는데, 이유는 int main 자체가 기본 함수라서 변수를 받을 필요가 없는겁니다.
다른 함수를 만들어보자면..
int sum(int x, int y);
로 변수를 선언한 뒤에
int sum(int x, int y)
{
int sum;
sum = x + y;
retirn sum;
}
로 변수를 만들 수 있습니다.
2. 함수의 선언과 정의, 호출과 반환
사실 변수가 main 함수 위에 만들어지면 선언할 필요는 없는데, main함수는 프로그램의 필수요소라 밑으로 내려가는 건 좋지 않아요.
가능하다면 저렇게 해 주도록 합시다.
그럼 바로 실습!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int sum(int x, int y);
int main()
{
int a = 0;
int b = 0;
int result = 0;
printf("합산할 수를 입력하세요 : ");
scanf("%d %d", &a, &b);
result = sum(a, b);
printf("합은 : %d입니다.\n", result);
return 0;
}
int sum(int x, int y)
{
int sum;
sum = x + y;
return sum;
}
맨 위에서 int sum(int x, int y); 함수를 먼저 선언하고, main 아래에 함수 구조가 정의된 것을 볼 수 있어요.
아무 수나 2개 입력하면 출력값이 나옵니다.
혹은 아래쪽 함수에서 return(x + y)를 해도 문제없습니다. 이러려면 sum 선언은 지워야겠네요.
그리고 보시면 함수 이름과 변수 이름이 같습니다.
사실 이건 좀 복잡한 문제인데, 전역 변수와 지역 변수가 관련되어 있거든요.
관련내용은 좀 나중에 알아보고, 일단 변수는 해당하는 함수 블럭 안에서만 사용된다고 알아줍시다.
그리고 위쪽 main 함수에서 보낸 인수 a, b값을 아래쪽 함수에서는 매개변수 x,y로 받는 것을 볼 수 있어요.
인수 a, b값은 변하지 않고, 매개변수 x,y가 새로 생긴겁니다.
물론 콤마가 더 들어가면 더 많은 인수를 받을 수 있어요.
결과값은 return으로 출력합니다.
다만 이 경우 함수의 결과값은 main 함수처럼 버려지는 것이 아닌 위쪽 main 함수의 result에 저장됩니다.
결론적으로 말하면
함수의 선언 : 전처리문과 main 함수 사이에 함수를 선언해두는 것(세미콜론 필요)
함수의 정의 : main 함수 아래에 구동할 함수를 정의해두는 것
함수의 호출 : 함수 이름으로 함수에 인수를 보내는 것
함수의 반환 : 인수 -> 매개변수 전환으로 처리된 값을 리턴받아 대입하는 것.
'프로그래밍 > C' 카테고리의 다른 글
여러 가지 함수 유형 (0) | 2025.04.23 |
---|---|
연산자 - 예제 모음 (0) | 2025.04.20 |
반복문 - 예제 모음 (0) | 2025.04.18 |
선택문 - 예제 모음 (0) | 2025.04.18 |
변수와 데이터 입력 - 예제 모음 (0) | 2025.04.18 |