안녕하세요. CodeMuscle 입니다.
C++ 함수 가이드: 정의, 매개변수, 오버로딩, 재귀 등
함수는 C++에서 프로그램을 구성하는 기본적인 블록입니다. 코드를 여러 번 재사용하고, 논리적인 단위로 나누어 가독성을 높일 수 있도록 도와줍니다. 이번 글에서는 함수의 정의 및 선언, 매개변수, 함수 오버로딩 등 함수와 관련된 다양한 개념을 예제 코드와 함께 쉽게 설명해 보겠습니다.
1. 함수 정의 및 선언
C++에서 함수는 특정 작업을 수행하는 코드 블록입니다. 함수를 사용하기 위해서는 먼저 함수를 정의하거나 선언해야 합니다.
- 함수 선언과 정의 함수 선언은 함수의 이름, 반환 타입, 매개변수 리스트를 명시하여 컴파일러에 함수가 있음을 알려줍니다. 함수 정의는 함수의 실제 내용을 작성합니다.위 코드에서 add 함수는 두 정수를 더하는 역할을 합니다.
- // 함수 선언 (프로토타입) int add(int a, int b); int main() { int result = add(3, 4); // 함수 호출 std::cout << "Result: " << result << std::endl; return 0; } // 함수 정의 int add(int a, int b) { return a + b; }
2. 매개변수와 반환값
함수는 매개변수를 받아들이고, 특정 반환값을 가질 수 있습니다.
- 매개변수는 함수가 필요한 입력 값을 받을 수 있도록 합니다.
- 반환값은 함수가 계산한 결과를 호출한 곳으로 돌려줍니다.multiply 함수는 두 실수를 곱한 결과를 반환합니다.
- double multiply(double x, double y) { return x * y; } int main() { double product = multiply(2.5, 4.0); std::cout << "Product: " << product << std::endl; return 0; }
3. 함수 오버로딩
함수 오버로딩은 동일한 이름을 가진 여러 함수를 정의하는 기능으로, 매개변수의 수나 타입에 따라 다른 함수를 호출하게 합니다.
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int main() {
std::cout << add(3, 4) << std::endl; // 정수 버전 호출
std::cout << add(2.5, 3.5) << std::endl; // 실수 버전 호출
return 0;
}
위 코드에서는 add 함수가 매개변수에 따라 다른 버전이 호출됩니다.
4. 기본값을 갖는 매개변수
함수의 매개변수에 기본값을 설정하면, 호출 시 값을 생략할 수 있습니다.
void greet(std::string name = "Guest") {
std::cout << "Hello, " << name << "!" << std::endl;
}
int main() {
greet(); // 기본값 "Guest" 사용
greet("Alice"); // "Alice"로 호출
return 0;
}
greet 함수는 매개변수 없이 호출될 경우 기본값을 사용합니다.
5. 참조자와 포인터를 이용한 함수
함수는 매개변수를 참조자(reference)나 포인터(pointer)로 전달할 수 있습니다. 이는 함수에서 원본 값을 수정할 때 유용합니다.
- 참조자를 이용한 함수참조자를 사용하면 함수가 매개변수로 전달된 원본 값을 직접 수정할 수 있습니다.
- void increaseByOne(int& n) { n += 1; } int main() { int num = 5; increaseByOne(num); std::cout << "Increased: " << num << std::endl; // 출력: 6 return 0; }
- 포인터를 이용한 함수포인터를 사용하면 매개변수의 주소를 넘겨주어 함수에서 값을 수정할 수 있습니다.
- void changeValue(int* p) { *p = 20; } int main() { int value = 10; changeValue(&value); std::cout << "Changed Value: " << value << std::endl; // 출력: 20 return 0; }
6. inline 함수
inline 함수는 함수 호출의 오버헤드를 줄이기 위해 컴파일러가 함수 코드를 호출하는 대신 그 자리에 직접 삽입하도록 합니다.
inline int square(int x) {
return x * x;
}
int main() {
std::cout << square(5) << std::endl; // 출력: 25
return 0;
}
inline 키워드를 사용하면 작은 크기의 함수에서 성능 향상을 기대할 수 있습니다.
7. 재귀 함수 (Recursion)
재귀 함수는 자기 자신을 호출하는 함수입니다. 주로 문제를 작은 부분으로 쪼개어 해결할 때 사용합니다.
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
int result = factorial(5);
std::cout << "Factorial of 5: " << result << std::endl; // 출력: 120
return 0;
}
factorial 함수는 입력 값이 1이 될 때까지 재귀적으로 호출하여 결과를 반환합니다.
마무리
이 글에서는 C++ 함수의 기본적인 개념들에 대해 알아보았습니다. 함수 정의 및 선언, 매개변수와 반환값, 함수 오버로딩, 재귀 함수 등 다양한 기능을 활용하여 프로그램을 더욱 효율적이고 구조적으로 작성할 수 있습니다. 직접 예제 코드를 작성하고 실행해 보면서 함수의 작동 방식을 익혀 보세요!
'언어 > C++' 카테고리의 다른 글
6일차)C++ 문법 단기간에 끝내기!! _기초 문법편6 (0) | 2024.12.04 |
---|---|
5일차)C++ 문법 단기간에 끝내기!! _기초 문법편5 (1) | 2024.12.02 |
3일차)C++ 문법 단기간에 끝내기!! _기초 문법편3 (1) | 2024.11.29 |
2일차)C++ 문법 단기간에 끝내기!! _기초 문법편2 (2) | 2024.11.19 |
1일차)C++ 문법 단기간에 끝내기!! _기초 문법편1 (2) | 2024.11.18 |