본문 바로가기

C언어_VisualStudio

사용자 정의 함수

함수의 대한 기본 설명은 다음 글을 참고하면 된다.

https://cwithvisual.tistory.com/entry/%ED%91%9C%EC%A4%80-%ED%95%A8%EC%88%98-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EC%9D%98-%ED%95%A8%EC%88%98

 

#8 C / C++ 함수 기본 / 표준 함수 / 사용자 정의 함수

오늘은 함수에 대해서 간단하게 정리하고, 그에 따라 표준 함수와 사용자 정의 함수도 간단하게 다뤄보려고 한다. :-) 함수의 정의 및 종류 C에서 기본적인 구성 요소 중의 하나이다. 코드의 묶음

cwithvisual.tistory.com


오늘은 사용자 정의 함수에 대해 자세히 해보려고 한다. :-)

 

사용자 정의 함수

사용자 정의 함수, 함수 위치, 함수의 원형, 사용자 정의 함수의 종류


사용자 정의 함수

  • 사용자 정의 함수는 사용자가 직접 만드는 함수이다.
  • 원하는 모든 것이 표준함수에 다 있을 수 없기 때문에, 사용자 정의 함수가 필요하다.
  • 함수를 만들때, 함수의 이름, 전달받는 값, 반환하는 값에 대해 기술해 주어야 한다.
  • 함수의 내부(중괄호{}안)에는 함수가 수행하는 일과 관련한 코드가 들어간다. 
  • 함수가 전달 받는 값은 여러 개일 수 있으나 (없을 수도 있음) 반환하는 값은 반드시 한 개 이하(한 개 이거나 없거나) 여야 한다. 
  • 동일한 이름을 가지는 함수는 존재할 수 없다.

 

함수의 기본 형태는 다음과 같다.

함수의 기본 형태

 

예제) 정수 두 개를 입력 받아서 합을 반환하는 함수를 만들어보자.

  1. 함수 이름은? sum  <- 합을 반환하는 함수이니 합의 의미를 가지는 sum으로 지었다.
  2. 반환하는 값의 자료형은? int  <- 정수 두 개의 합이므로 반환 값도 정수형(int)이다.
  3. 전달받는 값에 대한 정보는? int형, x, y  <- 정수 두 개를 입력받는다. 각각의 변수는 x, y이다.
  4. 함수 내부는? 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 

 

달력 프로그램 만들기 완전정복!

달력 프로그램 구성 사용자에게 출력하고 싶은 년도와 달을 입력하도록 하고, 달력을 출력해준다. 여러 개의 함수로 구성되어 있으며 긴 코드를 작성하는 연습을 할 수 있다. 여러 함수 설명 다

cwithvisual.tistory.com

 

 

사용자 정의 함수의 종류

1. 입력도 있고 반환도 있는 함수

int sum(int x, int y){
    ...
}

2. 입력은 있지만 반환은 없는 함수

void print_gu(int n){
    ...
}

3. 입력은 없고 반환은 있는 함수

int ex(void){
    ...
}

4. 입력도 없고 반환도 없는 함수

void vo(void){
    ...
}

 

각각의 경우에 따른 예제는 다음 글에 있다. 

사용자 정의 함수의 종류에 따른 예제 

https://cwithvisual.tistory.com/entry/%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EC%9D%98-%ED%95%A8%EC%88%98%EC%9D%98-%EC%98%88%EC%A0%9C-%ED%81%B0-%EA%B0%92-%EC%B6%9C%EB%A0%A5-%ED%95%A8%EC%88%98-%EA%B5%AC%EA%B5%AC%EB%8B%A8-%EC%B6%9C%EB%A0%A5-%ED%95%A8%EC%88%98-%EC%96%91%EC%88%98-%EC%9E%85%EB%A0%A5-%EB%B0%9B%EB%8A%94-%ED%95%A8%EC%88%98-%EC%95%84%EC%8A%A4%ED%82%A4%EC%BD%94%EB%93%9C-%EC%B6%9C%EB%A0%A5-%ED%95%A8%EC%88%98

 

사용자 정의 함수의 예제 : 큰 값 출력 함수, 구구단 출력 함수, 양수 입력 받는 함수, 아스키코드

오늘은 이전 글인 사용자 정의 함수의 각 종류별로 간단하게 예제를 풀어볼 것이다. :-) 큰 값 출력 함수, 구구단 출력 함수, 양수 입력 받는 함수, 아스키코드 출력 함수 1. 입력도 있고 반환도 있

cwithvisual.tistory.com