C++ 함수
// 함수(Function)
1. 정의
- 특별한 목적의 작업을 수행하기 위한 코드의 집합
- C++에서 특정 작업을 캡슐화하는 데에 사용
2. 사용하는 이유
(1) 효율성 : 반복적 프로그래밍을 피할 수 있음
특정 작업을 여러 번 반복해야할 때
해당 작업을 수행하는 함수를 만들어 두면 편함.
(2) 가독성 : 여러 개의 함수로 나누어 소스 파일을 작성하면,
모듈화를 꾀할 수 있음.
프로그램에 문제가 발생하거나 기능 변경이 필요할 때
유지보수가 비교적 편하다.
(3) 함수의 분량에 대해서 정확히 명시된 규칙은 없다.
다만, 보통 함수 1개당 1기능 1개를 암묵적으로 작성하고 있다.
3. 사용 방법
(1) main 함수 위에 선언
(2) main 함수 안에서 호출(=함수를 사용)
- 함수에 필요한 요소(인수 argument)를 괄호 안에 넣는다
- 인수는 상수나 변수를 쓰며, 수식을 사용하면 수식의 결과 값이 인수로 사용됨
- 인수는 함수나 매개변수(parameter)에 복사된다
(3) 함수가 값을 반환하는 경우는 호출문을 수식의 일부로 사용할 수 있다.
<함수의 형태>
[1. 반환자료형] [2. 함수명] (3. 매개변수 목록)
{
<4. 몸통>
}
1. 반환자료형 (return type)
- 함수가 모든 작업을 마치고 반환하는 데이터 타입을 명시
2. 함수명
- 함수를 호출하기 위한 이름
3. 매개변수 목록 (parameters)
- 함수 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시
4. 몸통
- 함수의 고유 기능을 수행하는 명령문을 적는곳
//=====================================================
◆ 함수 호출 시에는 여러 개의 인수를 전달할 수 있지만,
함수가 반환할 수 있는 값은 1개를 넘지 못한다.
◆ 함수 중에서는 특성에 따라 인수나 반환값이 하나도 없는 함수가 있다.
void형 함수이다.
◆ C++에서는 반환 값으로 배열을 제외한 모든 타입을 사용할 수 있다.
하지만 구조체나 객체에 포함된 배열은 반환 불가.
◆ C/C++ 환경에서는 main 함수를 가장 먼저 실행하는데,
사용자 정의 함수가 main 함수보다 뒤에 있으면
컴파일러가 이를 확인하지 못해 컴파일 오류를 발생시킨다.
해당 함수가 나중에 정의되어 있다는 것을 알려주기 위해
함수의 원형을 main 함수 앞에 먼저 선언한다.
//============================================================
// 함수 전방 선언
int calcPlus(int a, int b);
void Description(int a, int b);
int main()
{
//int
int a = 10;
int b = 20;
// 함수 호출
Description(a, b); // void는 return을 안적어도 호출됨.
cout << calcPlus(a, b) << endl; // 함수 호출하고 반환되는 위치
return 0;
}
// 2개의 정수를 인수로 받아 계산하는 calcPlus 함수
int calcPlus(int a, int b)
{
int result;
result = a + b;
return result;
}
// 인수나 반환자료형이 없는 void형 함수
void Description(int a, int b)
{
cout << "변수 a : " << a << ", 변수 b : " << b << endl;
cout << "변수 a + b의 값은?" << endl;
}