본문 바로가기

C++ 기초 1

[C++] 1-1 함수의 정의, 콜론 의미, 만들기

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