[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. 함수의 반환값
함수를 사용하다 보면, 함수를 호출한 그 위치에서 함수의 결과값을 사용해야하는 경우가 있습니다.
예를 들어서 두 매개변수 a
와 b
를 더하는 함수의 경우 그 더한 결과를 호출한 위치에서 사용해야하는 경우가 있습니다.
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는 서로 다른 변수입니다!