함수의 대한 기본 설명은 다음 글을 참고하면 된다.
오늘은 사용자 정의 함수에 대해 자세히 해보려고 한다. :-)
사용자 정의 함수, 함수 위치, 함수의 원형, 사용자 정의 함수의 종류
사용자 정의 함수
- 사용자 정의 함수는 사용자가 직접 만드는 함수이다.
- 원하는 모든 것이 표준함수에 다 있을 수 없기 때문에, 사용자 정의 함수가 필요하다.
- 함수를 만들때, 함수의 이름, 전달받는 값, 반환하는 값에 대해 기술해 주어야 한다.
- 함수의 내부(중괄호{}안)에는 함수가 수행하는 일과 관련한 코드가 들어간다.
- 함수가 전달 받는 값은 여러 개일 수 있으나 (없을 수도 있음) 반환하는 값은 반드시 한 개 이하(한 개 이거나 없거나) 여야 한다.
- 동일한 이름을 가지는 함수는 존재할 수 없다.
함수의 기본 형태는 다음과 같다.
예제) 정수 두 개를 입력 받아서 합을 반환하는 함수를 만들어보자.
- 함수 이름은? sum <- 합을 반환하는 함수이니 합의 의미를 가지는 sum으로 지었다.
- 반환하는 값의 자료형은? int <- 정수 두 개의 합이므로 반환 값도 정수형(int)이다.
- 전달받는 값에 대한 정보는? int형, x, y <- 정수 두 개를 입력받는다. 각각의 변수는 x, y이다.
- 함수 내부는? x+y <- 합이므로 x+y로 적을 수 있다.
int sum(int x, int y){
return x + y;
}
함수의 위치
함수의 위치는 어디든 상관이 없을까?
다음과 같이 main함수를 쓰고 사용자 정의 함수를 그다음에 쓴 후 실행해보자.
#include <stdio.h>
// main함수
int main(void) {
printf("%d", sum(3, 4));
return 0;
}
// 사용자 정의 함수
int sum(int x, int y) {
return x + y;
}
사용자 정의 함수 sum이 정의되지 않았다고 문구가 뜨지만 프로그램은 실행이 된다. 프로그램의 코드가 길지 않은 경우에는 실행도 잘 된다.
프로그램은 순차적으로 코드를 읽어내기 때문에 main함수에서 사용할 사용자 정의 함수는 main함수보다 앞에 정의되어 있어야 한다.
#include <stdio.h>
// 사용자 정의 함수
int sum(int x, int y) {
return x + y;
}
// main함수
int main(void) {
printf("%d", sum(3, 4));
return 0;
}
이렇게 쓰면 경고 문구 없이 프로그램이 잘 실행된다.
단, 사용자 정의 함수가 많아지고 코드가 길어지면 어느 함수가 먼저 정의가 되어야 하는지 혼란이 올 수 있다. 그럴 때는 main함수 이전에 함수의 원형(Prototype)을 적어주면 된다.
함수의 원형(Prototype)
함수의 원형은 함수 이름, 반환하는 자료형, 전달받는 변수의 자료형으로 적어주면 된다.
int sum(int, int);
함수의 원형을 main함수 앞에 적어주면 함수의 위치와 상관없이 잘 실행된다.
#include <stdio.h>
int sum(int, int); // 함수의 원형
// main 함수
int main(void) {
printf("%d", sum(3, 4));
return 0;
}
// 사용자 정의 함수
int sum(int x, int y) {
return x + y;
}
이렇게 함수의 원형을 적어주는 것은 '달력 프로그램 만들기'처럼 사용자 정의 함수를 여러 개 쓸 경우에 좋다.
참고) '달력 프로그램 만들기' https://cwithvisual.tistory.com/entry/%EB%8B%AC%EB%A0%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8?category=970125
사용자 정의 함수의 종류
1. 입력도 있고 반환도 있는 함수
int sum(int x, int y){
...
}
2. 입력은 있지만 반환은 없는 함수
void print_gu(int n){
...
}
3. 입력은 없고 반환은 있는 함수
int ex(void){
...
}
4. 입력도 없고 반환도 없는 함수
void vo(void){
...
}
각각의 경우에 따른 예제는 다음 글에 있다.
사용자 정의 함수의 종류에 따른 예제
'C언어_VisualStudio' 카테고리의 다른 글
연산자 : 논리 연산자, 조건 연산자, 콤마 연산자, 비트 단위 연산자, 연산자의 우선 순위와 결합 규칙 (0) | 2021.05.29 |
---|---|
연산자 : 산술 연산자, 대입 연산자, 관계 연산자 (0) | 2021.05.28 |
#8 C / C++ 함수 기본 / 표준 함수 / 사용자 정의 함수 (0) | 2021.05.24 |
#7 C의 자료형(Data Type) 정리 (0) | 2021.05.22 |
#6-2 변수(variable)_메인 메모리, 정수형 변수 저장방법 (0) | 2021.05.21 |