C++ 학습: 함수
함수는 코드의 재사용성과 가독성을 높이는 중요한 개념입니다. 이번 글에서는 함수 정의와 호출, 반환값과 매개변수, 그리고 재귀 함수에 대해 알아보겠습니다.
1. 함수 정의와 호출: 함수 선언과 정의, 호출 방법
함수 정의는 함수의 이름, 반환형, 매개변수 목록, 그리고 함수가 수행할 작업을 지정하는 것입니다. 함수 호출은 정의된 함수를 실제로 사용하는 것입니다.
함수 정의의 기본 구조
// 함수가 수행할 작업
return 반환값;
}
함수 선언 : 함수를 정의하기 전에 함수의 반환형, 이름, 매개변수 목록을 선언하여 컴파일러에게 함수의 존재를 알립니다.
using namespace std;
// 함수 선언
void sayHello();
int add(int a, int b);
int main() {
// 함수 호출
sayHello();
int result = add(3, 4);
cout << "3 + 4 = " << result << endl;
return 0;
}
// 함수 정의
void sayHello() {
cout << "Hello, World!" << endl;
}
int add(int a, int b) {
return a + b;
}
위의 예제에서 sayHello 함수는 반환형이 void이며 매개변수가 없습니다. add 함수는 두 개의 정수 매개변수를 받아 그 합을 반환합니다. main 함수에서 이 두 함수를 호출하여 사용합니다.
2. 반환값과 매개변수: 함수의 반환형과 인자
함수는 호출된 곳으로 값을 반환할 수 있으며, 호출 시에 필요한 데이터를 매개변수를 통해 전달받을 수 있습니다.
반환값이 있는 함수의 예제
[cpp]
#include <iostream>
using namespace std;
int multiply(int a, int b) {
return a * b; // 두 정수를 곱하여 반환
}
int main() {
int result = multiply(5, 6); // 함수 호출 및 반환값 저장
cout << "5 * 6 = " << result << endl;
return 0;
}
위의 예제에서 multiply 함수는 두 개의 정수형 매개변수를 받아 그들의 곱을 반환합니다.
매개변수가 있는 함수의 예제
using namespace std;
void greet(string name) {
cout << "Hello, " << name << "!" << endl;
}
int main() {
greet("Alice"); // 함수 호출
greet("Bob"); // 함수 호출
return 0;
}
위의 예제에서 greet 함수는 문자열 매개변수를 받아 그 이름을 포함한 환영 메시지를 출력합니다.
3. 재귀 함수: 자기 자신을 호출하는 함수
재귀 함수는 함수가 자기 자신을 호출하는 함수입니다. 재귀 함수는 반복적인 작업을 수행할 때 유용하며, 특히 알고리즘 문제 해결에 자주 사용됩니다. 그러나 종료 조건을 잘 설정하지 않으면 무한 루프에 빠질 수 있습니다.
재귀 함수의 예제
using namespace std;
// 팩토리얼을 계산하는 재귀 함수
int factorial(int n) {
if (n <= 1) {
return 1; // 종료 조건
} else {
return n * factorial(n - 1); // 재귀 호출
}
}
int main() {
int number = 5;
int result = factorial(number); // 함수 호출
cout << "Factorial of " << number << " is " << result << endl;
return 0;
}
위의 예제에서 factorial 함수는 입력된 정수 n의 팩토리얼을 계산합니다. n이 1 이하일 때 1을 반환하고, 그렇지 않으면 자기 자신을 호출하여 n * factorial(n - 1)을 계산합니다.
재귀 함수를 사용할 때는 항상 종료 조건을 명확하게 설정하여 무한 루프를 방지해야 합니다.
이번 글에서는 C++의 함수에 대해 알아보았습니다. 함수 정의와 호출, 반환값과 매개변수, 재귀 함수를 이해하고 활용하는 것은 C++ 프로그래밍의 중요한 부분입니다. 다음 단계에서는 배열과 문자열에 대해서 학습을 해보세요. Happy Coding!
'프로그래밍 > C++' 카테고리의 다른 글
[C++] 6. C++의 "구조체와 클래스" (0) | 2024.06.17 |
---|---|
[C++] 5. C++의 "포인터와 참조" (0) | 2024.06.14 |
[C++] 4. C++의 "배열과 문자열" (0) | 2024.06.14 |
[C++] 2. C++의 "기본 문법" (0) | 2024.06.14 |
[C++] 1. C++의 "기초 개념" (0) | 2024.06.14 |