1. 함수란?
함수란 특정한 작업을 수행할 수 있도록 설계된 독립적인 프로그램을 말한다. 프로그램 내에서 여러 번 실행해야 할 특정 작업이 있는 경우 함수를 활용하면 편리하다. 함수들 중에는 수학 함수, 파일 관련 함수, 입출력 함수와 같이 C++ 컴파일러에서 기본적으로 제공하는 표준 함수(Standard function)와 사용자가 직접 만들어서 사용할 수 있는 사용자 정의 함수(User defined function)가 있다. 표준함수는 #include로 라이브러리(library) 파일을 읽어서 사용할 수 있다.
2. 함수의 사용
함수의 가능은 main()함수 앞에서 정의하거나 main() 함수 뒤에서 정의할 수 있다. 하지만 후자인 경우에는 반드시 함수의 원형을 main() 함수 앞에 선언하여 컴파일러에게 미리 알려 주어야 한다.
2-1 함수의 정의
함수는 머리(header)와 몸체(body)부분으로 구성하며, 중괄호 기호로 함수의 시작과 끝을 나타낸다. 머리 부분에 세미콜론(;)을 사용하지 않도록 주의해야 한다. 세미콜론이 없는 이유는 함수가 정의되는 header 부분이라는 것을 컴파일러에게 알리기 위한 것이다.
함수의 기본형식
함수형 함수명(가인수형과 가인수의 리스트) ← 머리(Hearder) 부분
{
내부 변수 선언;
실행문;
} ← 몸통(body) 부분
① 함수형 & 함수명
함수형은 return 문에서 반환하는 값의 데이터형 (int, float 등)을 말하며 만일 반환값이 없으면 void로 설정한다. 함수명은 사용자가 마음대로 지정할 수 있다.
② 가인수형 & 가인수의 리스트
함수를 호출하는 경우, 호출 측에서 특정 데이터를 피 호출 함수로 넘겨줄 수 있는데, 호출 측에서 넘겨주는 인수를 "실인수", 피 호출 함수에서 전달받은 인수를 "가인수"라고 한다. 이때 가인수와 실인수의 개수 및 데이터형이 일치해야 한다. 하지만 인수명은 같거나 달라도 상관없다. 만일 전달받을 인수가 없는 경우에는 괄호 안을 비워두거나 void을 기입한다.
③ 내부 변수 선언 및 실행문
내부 변수란 함수 내부에서만 통용되는 변수를 말한다. 지역 변수(local variable)라 부르며 호출 측의 함수 내에서 사용되는 변수 이름과 중복되더라도 별개의 변수로 처리된다.
예제 1
#include <iostream>
using namespace std;
int sum(int x, int y) //사용자 정의 함수
{
int z; //함수 sum에서만 일시적으로 사용하는 변수
z = x + y;
return z;
}
int main() // main()함수
{
int a, b, c;
a = 10, b = 5;
c = sum(a, b);
cout << "c=a+b=" << c << endl; //사용자 정의 함수 sum()을 호출
return 0;
}
- c++ 프로그램은 항상 main()함수부터 시작한다. main() 함수 문장을 차례로 실행하고 함수를 호출하는 문장이 있으면 해당 함수를 실행시킨 후에 다시 main() 함수로 되돌아가서 그다음 문장을 실행한다.
- main() 함수 내에서 sum() 함수를 호출했다. a=10, b=5를 피 호출 함수의 가인수 x,y에 전달하고 z=10+5를 계산하여 z의 값인 15를 main함수로 반환(return)했다.
- 피 호출 함수측의 인수 x, y를 가인수라 하며, 호출 측의 인수 a, b를 실인수라 한다. 가인수와 실인수의 개수와 데이터형은 일치해야 한다. 가인수와 실인수 이름은 같거나 달라도 상관없다.
예제 2
#include <iostream>
using namespace std;
double sum(double x, double y) //사용자 정의 함수
{
double z;
z = x + y;
return z;
} // double형 z의 값을 호출 측에 반환
int main()
{
double a, b, c;
cout << "a? b?";
cin >> a >> b;
c = sum(a, b); // 사용자 정의 함수 sum()을 호출
cout << "a=" << a << ", b=" << b << ", a+b=" << c << endl;
return 0;
}
- main() 함수 내에서 sum()함수를 호출했다. sum() 함수의 함수형과 return 문에서 반환하는 z의 값은 double 형으로 일치하고 있다.
예제 3
#include <iostream>
using namespace std;
int max(int x, int y) //사용자 정의 함수
{
if (x > y)
return x;
else
return y; //복수의 return문
}
int main() //main()함수
{
int a, b, c;
cout << "a?b? ";
cin >> a >> b;
c = max(a, b); //사용자 정의 함수 max() 호출
cout << "max=" << c << endl;
return 0;
}
- 함수 내에 여러 개의 return문을 기술할 수 있지만, 함수의 실행 과정에서 처음 만나는 return 문에 의해 값이 반환된다.
참고
1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13
'C++ 기초 1' 카테고리의 다른 글
| [C++] 1-6 함수 호출 방식 (call by reference) (49) | 2023.11.13 |
|---|---|
| [C++] 1-5 함수 호출 방식 (call by value) (50) | 2023.11.10 |
| [C++] 1-4 재귀함수 설명 및 예제 (52) | 2023.11.09 |
| [C++] 1-3 void 함수 호출 및 쓰는 이유 (52) | 2023.11.08 |
| [C++] 1-2 함수의 원형 선언 및 위치 (51) | 2023.11.07 |