Post

[C++] 함수란? #4

1. 변수 복습하기

C++에서 변수란 특정한 값을 저장하는 공간 이었습니다.
그렇다면 함수는 무엇일까요?


2. 함수는 동작이다.

수학에서 사용하는 함수는 입력값 x에 특정한 연산을 해서 y라는 출력값 을 만들어냅니다.

프로그래밍에서 사용하는 함수라는 개념도 많이 다르지 않습니다.
수학에서 사용하는 함수와 프로그래밍에서 함수의 다른 점은 함수의 출력값이 없을 수도 있다는 점 입니다.

이 단락의 이름처럼 함수는 동작이라고 볼 수 있습니다.
예를 들어서, eat이라는 함수가 있으면 eat이라는 함수를 실행했을 때 먹는 행위하는 것이죠.
또한, 덧셈을 하는 함수가 있다면 sum이라는 함수를 만들어서 실행하면 되는것입니다.

함수는 왜 중요할까?
함수는 여러개의 연관된 코드를 자주 실행해야할 때 유용합니다.
예를 들어서, FPS 게임에서 총을 발사하는 상황은 아주 흔합니다.
따라서 총을 발사하는 코드를 하나의 함수로 정의해서 필요할 때마다 호출한다면 코드의 중복을 줄일 수 있습니다.

3. 함수의 선언

함수를 실행하기 위해선 함수가 있어야 합니다.
따라서 함수를 선언하는 방법을 알아야하죠.

아래 코드는 함수를 정의하는 코드입니다.

1
2
3
int myFunction() {
    
}

위 코드를 보면 생각나는 것이 하나 있습니다.
바로 변수를 선언할 때 사용했던 int가 함수를 선언할 때에도 사용되는 것입니다.

따라서, 함수 또한 변수처럼 선언할 때 앞에 자료형을 적어주어야 합니다.
이 자료형은 함수의 출력값이 무슨 종류인지를 나타냅니다.
예를 들어서, 두 숫자를 더하는 함수라면 자료형이 위 코드와 마찬가지로 int가 되겠죠.

다음으로 적힌 myFunction이라는 단어는 함수의 이름이 됩니다.
함수를 저렇게 선언했다면 앞으로는 myFunction이라는 이름으로 사용해야 하죠.

중괄호 안을 보면 아직 아무 것도 적혀있지 않습니다.
저 중괄호 안에 입력된 코드들은 myFunction이라는 함수를 사용할 때마다 실행되게 됩니다.

1
2
3
4
5
#include <iostream>

int myFunction() {
    std::cout << "myFunction이 실행되었습니다!";
}

위 코드처럼 출력하는 코드를 넣는다면 myFunction이 실행될 때마다 적힌 문장이 출력됩니다.


4. 함수의 호출

함수를 호출하는 방법은 간단합니다.
바로 함수의 이름 뒤에 소괄호 ()를 붙여주면 끝입니다.

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>

int myFunction() {
    std::cout << "myFunction이 실행되었습니다!";
}

int main() {
    myFunction(); // 함수를 실행하는 코드

    return 0;
}
1
myFunction이 실행되었습니다!

위 코드의 출력 결과처럼 main 안에 myFunction()라는 코드를 입력하자, 함수가 실행되었습니다.


5. 매개변수와 인자

5-1. 매개변수

매개변수란 함수가 실행될 때 그 함수가 사용할 값을 전달하는 공간 이라고 생각하면 쉽습니다.
수학에서 사용하는 함수를 예로 들면 f(x)라는 함수는 x라는 매개변수를 가지고 있는 것이죠.
따라서 매개변수는 함수 안에서 사용할 수 있으며 그 밖에서는 사용할 수 없다는 특징 이 있습니다.

아래는 a라는 정수형 타입의 매개변수를 가지고 있는 함수를 선언하는 코드입니다.

1
2
3
4
5
#include <iostream>

int myFunction(int a) {
    std::cout << "a: " << a;
}

5-2. 인자

매개변수를 받는 함수는 함수가 실행되기 위해선 매개변수가 들어갈 값이 있어야 합니다.
따라서 함수를 실행하는 코드에서 그 값을 전달해 줘야 합니다.
이때, 그 전달되는 값 자체를 인자 라고 부릅니다.

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>

int myFunction(int a) {
    std::cout << "a: " << a;
}

int main() {
    myFunction(256);

    return 0;
}
1
a: 256

6. 함수의 반환값

함수를 사용하다 보면, 함수를 호출한 그 위치에서 함수의 결과값을 사용해야하는 경우가 있습니다.
예를 들어서 두 매개변수 ab를 더하는 함수의 경우 그 더한 결과를 호출한 위치에서 사용해야하는 경우가 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>

int sum(int a, int b) {
    int result = a + b;
}

int main() {
    sum(2, 4);

    // 2하고 4를 더한 결과값을 여기에서 사용해야 되는데
    // result라는 변수는 지역 변수라 여기서 사용할 수 없네...?

    return 0;
}

이때 사용할 수 있는 것이 바로 return입니다.
return은 예약어로 그 뒤에 적힌 값을 함수가 호출된 곳으로 돌려보내 줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>

int sum(int a, int b) {
    int result = a + b;

    return result;
}

int main() {
    int result = sum(2, 4);

    std::cout << "덧셈 결과는 " << result << "입니다.";

    return 0;
}
1
덧셈 결과는 6입니다.

sum함수 안에 있는 result와 main함수 안에 있는 result는 서로 다른 변수입니다!

This post is licensed under CC BY 4.0 by the author.