함수의 기본 모양
수학에서의 함수와 같이,
input
, output
이 있고, input
이 들어갔을 때,
어떤 작업을 한 뒤, output
을 내보내는 방식으로 작동한다.
여기서는 input
, output
에 아무 숫자나 넣어줘도 되지만,
컴퓨터는 이 숫자 자체도 명시적으로 써줘야 하기 때문에,
어떤 input
이 들어가는지, 예상되는 output
은 어떤 녀석인지 명시적으로 써줄 필요가 있다.
Function in C++
int iSqrt(int p){ // #1
return p * p; // #2
}
int p
:input
파라미터의 자료형은 integer 이어야 한다.int iSqrt
:output
의 자료형은 integer 이다.어떻게 작용하는지 적어주는 함수의
body
이다.
Input, output paramater
수학에서의 함수와 다르게 input
, output
파라미터가 없을 수 있다.
input
파라미터가 없는 경우#include <iostream> int helloworld(void){ cout << "hello world"; return 0; } int main(){ helloworld(); }
출력 // helloworld
output
파라미터가 없는 경우#include <iostream> void helloworld(void){ cout << "helloworld"; } int main(){ helloworld(); }
출력 // helloworld
void
자료형은 window 운영체제에서만 가능하다.
Main 함수 안에서 사용
선언(Declare) , 정의(Define) , 호출(Calling) 의 세과정을 거친다.
선언(Declare)
int iSqrt(int);
main
함수로 들어가기 전에, 먼저 함수의 반환형과, 파라미터의 자료형이 써진함수의 원형(prototype) 을 적어준다.
변수 이름은 써줄필요없다.
정의(Define)
int iSqrt(int p){ return p * p; }
main
함수 밑에 어떻게 작용하는지 함수의 내용을 적어준다.이때는
input
파라미터로 변수의 이름까지 적어줘야 사용가능하다.호출(Calling)
y = iSqrt( x );
main
함수에서 불러서 사용한다.함수를 돌리고난 반환값이 y에 저장된다.
전체코드 예제
# include <iostream>
using namespace std;
int sum(int a, int b); // Declare
int main(){
int x, y;
cout << "x 입력" << endl;
cin >> x;
cout << "y 입력" << endl;
cin >> y;
cout << sum(x, y) << endl; // Calling
return 0;
}
int sum(int a, int b){ // Define
return a + b;
}
Default Arguments
함수를 호출했을 때, 아무 인자도 넣지 않았다면, default로 파라미터를 넘길 수 있다.
선언할 때, 인자값까지 같이 전달하면 된다.
또한, input이 적게 들어왔을 경우, 앞 인자만 초기값으로 설정된다.
# include <iostream>
using namespace std;
int sum(int a, int b); // Defalut Arguments
int main(){
int x, y;
cout << "x 입력" << endl; // 8
cin >> x;
cout << "y 입력" << endl; // 5
cin >> y;
cout << sum(x, y) << endl; // 13
cout << sum(x) << endl; // 9
cout << sum() << endl; // 7
return 0;
}
int sum(int a, int b){
return a + b;
}
함수의 동작과정
#include <iostream>
#include <cmath> // cmath 라이브러리 포함
using namespace std;
int main(){
double value;
// 변수 할당
value = 16;
// 루트 계산
double root = sqrt(value);
// 다른 값 계산 후 할당
root = sqrt(100);
}
cmath 는 수학 함수들을 모아둔 표준 c++ 라이브러리 이다.
우리가 주 목적을 두는 함수는 main
함수이다.
이때, 다른 함수를 불러올때, 어떤 방법으로 실행되는지 그림으로 살펴보자.
main
함수가 동작하다가, 중간에 sqrt
를 만나면
만들어둔 그 함수로 갔다가, 반환값을 다시 가져오고,
또 만나면 다시 갔다가 반환값을 가져오는 방식으로 동작한다.
cmath Library
#include <iostream>
- 종류