함수가 왜 필요한가.
크고 복잡한 문제를 작게 나눠서 하나씩 해결해 나가자!
함수 : 특정한 작업을 수행하는 독립적인 부분
함수 호출 : 함수를 불러서 사용하는 것
함수는 입력을 받으며 출력을 생성한다.
함수는 함수를 호출하는 루틴과 함수를 구현한 함수 정의 루틴으로 구성한다.
함수의 장점.
1. 크고 복잡한 문제를 작고 쉬운 문제들로 나누어 해결하기 쉽도록한다.
-> 구조적 프로그래밍 가능
2. 같은 코드를 반복적으로 기술해야 하는 중복을 최소화하여 코드양을 줄인다.
-> 코드의 수정, 유지보수가 쉬워진다.
3. 캡슐화가 가능하다.
-> printf()함수가 어떻게 구현되었는지 몰라도 사용법만 알면 사용가능
함수의 정의
반환형 ( return type )
함수 헤더 ( function header )
함수 몸체 ( function body )
반환형
함수는 두 가지 유형이 있다.
void 형 함수 ( 리턴값이 없는 함수 )
void 형이 아닌 함수 ( 리턴값이 있는 함수 ) int , float , bool
함수 선언
- 함수를 정의하기 전에 함수를 선언해야 한다.
- 함수선언은 함수이름 , 매개변수 , 함수가 리턴하는 값의 자료형을 기술하는 것으로 '함수 원형'이라고 한다.
- 함수 선언의 방법
1. 특정한 파일에 함수 원형을 선언한 후 메인소스파일에 #include<특정한 파일> 로 지정한다.
2. 소스코드 내에서 함수를 호출하는 것이 함수 정의보다 앞에 위치하면 함수 원형을 선언한다.
3. 소스코드 내에서 함수를 호출하는 것이 함수 정의보다 뒤에 위치하면 함수 원형을 선언하지 않는다.
오버로드(overload)
오버로드는 여러 함수들이 동일한 이름을 사용할 수 있는 기능을 말한다.
( 함수의 이름은 똑같으면서 매개변수의 종류만 다른 경우)
오버로딩 규칙
어떤 함수를 호출할지 결정하는 규칙
- 인자의 타입을 확인해서 그에 가장 잘 어울리는 시그니처를 가진 함수를 호출
반환값만 틀린 경우는 오버로드할 수 없다.
디폴트 매개변수
디폴트는 따로 지정해 주지 않았을 떄 기본적으로 선택하는 값을 의미한다.
디폴트 매개변수는 따로 값을 지정해 주지 않은 경우 선택하는 기본값
만약 함수의 매개변수에 대응하는 인자가 함수의 호출 시에 생략되면 매개변수에 기본 값이 복사된다.
디폴트 매개변수는 맨 뒤에서부터 앞쪽으로 순서대로 채워서만 정의할 수 있다.
int GetNumber(int p1 = 10)
{
....
return i;
}
inline 함수
인라인 함수는 하나의 라인이나 두세줄의 작은 코드를 가질 떄 함수원형없이 다음 형식으로 정의한다.
inline 리턴형 함수명 (매개변수 리스트) { 몸체; return 식; }
일반적으로 함수를 호출하면 함수의 코드가 있는 위치로 제어를 이동하여 처리한다.
인라인 키워드를 사용하면 컴파일러는 이 함수를 호출한 위치에 직접 코드를 복사하여 끼워넣는다.
실행시간 측정 함수 clock()
clock() : 호출되었을 때의 시스템 시각을 clock 단위로 반환한다.
실행시간을 측정하기 위해서는 두 시점에서의 시각을 구하고 그 차이를
CLOCKS_PER_SEC로 나누면 초(second)단위의 시간이 된다.
clock_t t1 = clock();
~~
clock_t t2 = clock();
double duration = (double)(t2-t1) / CLOCKS_PER_SEC;
'C,C++' 카테고리의 다른 글
[C++]객체지향 프로그래밍_포인터(1) (0) | 2019.06.03 |
---|---|
[C++]객체지향프로그래밍_변수의 범위 (0) | 2019.05.21 |
[C#] Class 클래스 사용_Random 과 List (0) | 2019.04.11 |
[C,C++] 배열과 포인터 (0) | 2019.02.28 |
[C,C++] 이중 포인터 (0) | 2019.02.25 |