Program Language/C++ 언어
10. C++ 함수의 기본
parkes811
2024. 5. 31. 02:06
- C++ 함수의 기본
- C++ 함수는 프로그램의 특정 작업을 수행하는 코드 블록입니다.
- 함수는 코드의 재사용성을 높이고 가독성을 향상시킵니다.
- 함수의 정의와 호출
- C++에서 함수는 다음과 같은 구조로 정의됩니다:
반환형 함수명(매개변수) {
// 함수 본문
return 값; // 반환형이 void인 경우 생략 가능
}
// 예를 들어, 두 수를 더하는 함수를 정의해보겠습니다:
int add(int a, int b) {
return a + b;
}
// 위의 add 함수는 두 개의 정수를 받아 그 합을 반환합니다. 함수는 다음과 같이 호출됩니다:
int result = add(3, 4); // result는 7
- 매개변수 전달 방법
- 매개변수를 전달하는 방법에는 값에 의한 호출(Call by Value),
- 참조에 의한 호출(Call by Reference),
- 포인터에 의한 호출(Call by Pointer)이 있습니다.
- 값에 의한 호출
- 값에 의한 호출은 매개변수의 값을 복사하여 함수에 전달합니다. 원래 값은 변경되지 않습니다:
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
- 참조에 의한 호출
- 참조에 의한 호출은 매개변수의 참조를 전달합니다. 함수 내에서 원래 값을 변경할 수 있습니다:
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
- 포인터에 의한 호출
- 포인터에 의한 호출은 매개변수의 주소를 전달합니다. 이를 통해 함수 내에서 원래 값을 변경할 수 있습니다:
void swap(int* a, int* b) {
int temp = *a;
*a = *b; *b = temp;
}
- 재귀 함수
- 재귀 함수는 함수가 자기 자신을 호출하는 함수입니다. 예를 들어, 팩토리얼을 계산하는 재귀 함수를 정의해 보겠습니다:
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
- 함수 포인터
- 함수 포인터는 함수의 주소를 저장하는 포인터입니다. 이를 사용하면 함수의 호출을 동적으로 변경할 수 있습니다:
int add(int a, int b) {
return a + b;
}
int (*funcPtr)(int, int) = add;
int result = funcPtr(3, 4); // result는 7
- 예제 코드
// 예제 1: 값에 의한 호출
#include <iostream>
void increment(int a) {
a++;
}
int main() {
int num = 5;
increment(num);
std::cout << num << std::endl; // 5
return 0;
}
// 예제 2: 참조에 의한 호출
#include <iostream>
void increment(int& a) {
a++;
}
int main() {
int num = 5;
increment(num);
std::cout << num << std::endl; // 6
return 0;
}
// 예제 3: 포인터에 의한 호출
#include <iostream>
void increment(int* a) {
(*a)++;
}
int main() {
int num = 5;
increment(&num);
std::cout << num << std::endl; // 6
return 0;
}
// 예제 4: 재귀 함수
#include <iostream>
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
int main() {
int num = 5;
std::cout << factorial(num) << std::endl; // 120
return 0;
}
// 예제 5: 함수 포인터
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
int (*funcPtr)(int, int) = add;
int result = funcPtr(3, 4);
std::cout << result << std::endl; // 7
return 0;
}