개인 공부/c++
Function pointer
Sanyo
2024. 6. 11. 16:46
#include <iostream>
// 함수 정의
int add(int a, int b) {
return a + b;
}
int multiply(int a, int b) {
return a * b;
}
int main() {
// 함수 포인터 선언 및 초기화
int (*operation)(int, int);
// add 함수의 주소를 함수 포인터에 할당
operation = add;
std::cout << "Addition: " << operation(5, 3) << std::endl; // 출력: Addition: 8
// multiply 함수의 주소를 함수 포인터에 할당
operation = multiply;
std::cout << "Multiplication: " << operation(5, 3) << std::endl; // 출력: Multiplication: 15
return 0;
}
다음과 같이 함수 포인터를 설정할 수 있다. 다음은 함수 포인터 배열.
#include <iostream>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int divide(int a, int b) {
return a / b;
}
int main() {
// 함수 포인터 배열 선언 및 초기화
int (*operations[4])(int, int) = { add, subtract, multiply, divide };
int a = 10, b = 2;
for(int i = 0; i < 4; ++i) {
std::cout << "Result: " << operations[i](a, b) << std::endl;
}
return 0;
}
Lambda function
[capture](parameters) -> return_type {
// 함수 본문
return expression;
}
기본 문법은 다음과 같다.
- capture: 외부 변수의 값을 람다 함수 내에서 사용할 때 사용합니다. 람다 함수가 외부 범위에 있는 변수를 참조할 때 사용됩니다.
- parameters: 람다 함수의 매개변수입니다.
- return_type: 람다 함수의 반환 타입입니다. 생략 가능합니다.
- {} 안에는 람다 함수의 본문이 위치합니다.
간단한 람다 함수
#include <iostream>
int main() {
// 람다 함수 정의와 호출
auto lambda = []() {
std::cout << "Hello, Lambda!" << std::endl;
};
lambda(); // 출력: Hello, Lambda!
return 0;
}
외부 변수를 사용
#include <iostream>
int main() {
int x = 10;
int y = 20;
// 람다 함수 정의와 호출
auto lambda = [x, y]() {
std::cout << "Sum: " << x + y << std::endl;
};
lambda(); // 출력: Sum: 30
return 0;
}
매개변수 사용
#include <iostream>
int main() {
// 람다 함수 정의와 호출
auto lambda = [](int a, int b) {
std::cout << "Sum: " << a + b << std::endl;
};
lambda(10, 20); // 출력: Sum: 30
return 0;
}