입력 값에 대해 어떤 가공을 통해 값을 만들어내는 구조/기능 필요한 이유 : 코드의 재사용성

함수를 만들때는 함수 하나당 하나의 기능만 만들기

반환 타입 함수 이름 매개 변수
	int     main     ()

반환 타입 : 반환 시 내보내는 값의 자료형 함수 이름 : 메모리 공간에 접근하기 위한 주소/키, 함수의 내용을 포괄하도록 짓기 매개 변수(파라미터/인자값) : 함수 안으로 입력하는 값을 전달하는 곳

void Test();    - 함수 선언부

int main(){

	Test();
}

void Test(){    - 함수 정의부

	....
}

() : 함수 호출 연산자

call by value - 함수 인자로 전달되는 값을 복사해서 전달, 원본 값 변형 x

call by reference -

*스택 프레임

**함수 오버로딩

같은 이름의 함수가 호출 될 때, 어떤 함수를 호출할지 컴파일 타임에 결정되는 문법

  • 함수의 이름이 같아야 함, 단 매개 변수의 형식은 달라야 한다.
  • 함수의 매개 변수 종류에 따라 어떤 함수가 호출 될 지 결정
  • 반환 타입의 다른 점과는 무관 (오직 함수 이름과 매개 변수의 형식만으로 오버로딩)
1. void Test(int _Data);
2. int Test(int _Data);

1번과 2번의 반환 타입이 달라도 오버로딩은 동작하지 않음

**default 매개 변수

void Test(int _Data=100);
  • 자주 사용하는 함수의 매개 변수를 초기화 값으로 설정
  • 선언부에서 지정
  • 매개 변수의 맨 오른쪽부터 순차적으로 기본값을 지정해야 한다.

**함수와 static

void Test(){
	static int iNum=100;
	cout<<(++iNum)<<endl;
}

data 영역에 할당되어 프로그램이 종료될 때까지 사용가능
정적 변수: 중괄호 안에서만 사용가능

재귀함수