완숙의 블로그

[C++] 3 - Functions #1 - Calling (호출) 본문

Programing Language/C++

[C++] 3 - Functions #1 - Calling (호출)

완숙 2019. 3. 20. 02:16

함수의 기본 모양

수학에서의 함수와 같이,

input , output 이 있고, input 이 들어갔을 때,

어떤 작업을 한 뒤, output 을 내보내는 방식으로 작동한다.

 

스크린샷 2019-03-18 오후 7 40 30

 

여기서는 input , output 에 아무 숫자나 넣어줘도 되지만,

컴퓨터는 이 숫자 자체도 명시적으로 써줘야 하기 때문에,

어떤 input 이 들어가는지, 예상되는 output 은 어떤 녀석인지 명시적으로 써줄 필요가 있다.

 

 

 

Function in C++

int iSqrt(int p){		// #1
    return p * p;		// #2
}

 

  1. int p : input 파라미터의 자료형은 integer 이어야 한다.

    int iSqrt : output 의 자료형은 integer 이다.

  2. 어떻게 작용하는지 적어주는 함수의 body 이다.

 

스크린샷 2019-03-18 오후 8 06 31

 

 

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) 의 세과정을 거친다.

 

  1. 선언(Declare)

    int iSqrt(int);
    

    main 함수로 들어가기 전에, 먼저 함수의 반환형과, 파라미터의 자료형이 써진

    함수의 원형(prototype) 을 적어준다.

    변수 이름은 써줄필요없다.

  2. 정의(Define)

    int iSqrt(int p){
        return p * p;
    }
    

    main 함수 밑에 어떻게 작용하는지 함수의 내용을 적어준다.

    이때는 input 파라미터로 변수의 이름까지 적어줘야 사용가능하다.

  3. 호출(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 함수이다.

이때, 다른 함수를 불러올때, 어떤 방법으로 실행되는지 그림으로 살펴보자.

 

스크린샷 2019-03-18 오후 8 02 22

 

main 함수가 동작하다가, 중간에 sqrt 를 만나면

만들어둔 그 함수로 갔다가, 반환값을 다시 가져오고,

또 만나면 다시 갔다가 반환값을 가져오는 방식으로 동작한다.

 

 

cmath Library

#include <iostream>

 

  • 종류

스크린샷 2019-03-18 오후 8 05 10

Comments