zyeon's 작심삼일 코딩 공부
함수 포인터 본문
함수도 메모리의 특정 주소에 저장되며, 이 주소를 함수 포인터에 저장할 수 있다.
return_type (*pointer_name)(parameter_types);
함수 포인터는 형태(반환형, 매개변수)가 맞는 함수의 주소를 받아 올 수 있다.
위와 같은 형태로 선언 해 사용한다.
함수 포인터를 사용하는 이유는 무엇일까?
상황이나 조건에 따라 호출하고 싶은 함수를 결정할 수 있기 때문에,
함수 포인터는 콜백 함수로 자주 사용되며, 함수 테이블에서 인덱스에 따라 다양한 함수를 호출하는 경우에도 사용한다.
#include <iostream>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
int (*operation)(int, int);
operation = &add;
std::cout << "10 + 5 = " << operation(10, 5) << std::endl;
operation = subtract; // 다른 함수로 변경, & 연산자 생략 가능
std::cout << "10 - 5 = " << operation(10, 5) << std::endl;
return 0;
}
위 코드는 함수 포인터를 사용하는 간단한 예시로,
두 수를 더하고 싶을 땐 add 함수를 연결하고, 빼고 싶을 땐 subtract 함수를 연결해주면 필요에 따른 연산을 해 줄 수 있다.
아래와 같이 함수 포인터를 인자로 받아 사용할 수도 있다.
void Operation(int a, int b, int (*func)(int, int)) {
int result = func(a, b); // 전달된 함수를 호출
std::cout << "Result: " << result << std::endl;
}
int main() {
int a = 10;
int b = 5;
Operation(a, b, &add); // add 함수를 전달
Operation(a, b, subtract); // sub 함수를 전달, & 생략 가능
return 0;
}
'c++ 정리' 카테고리의 다른 글
new delete (0) | 2024.08.09 |
---|---|
동적할당 malloc() (0) | 2024.07.02 |
문자 자료형 wchar_t (0) | 2024.06.28 |
void 포인터 (0) | 2024.06.21 |
const와 포인터 (0) | 2024.06.21 |