Notice
Recent Posts
Recent Comments
Link
반응형
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- generic pointer
- unittest
- Topic
- rospy.spin
- gradient accumulation
- 데이터분석
- convex
- remapping
- gjk
- plotjuggler
- gjk-epa
- Turtlesim
- vscode
- 비동기적
- rust
- broad-phase
- mock
- CONSTRAINTS
- CMAKE
- narrow-phase
- cbindgen
- C++
- roslaunch
- 워크스페이스
- corrosion
- Cargo
- subsribe
- separating axis theorem(sat)
- ROS
- UV
Archives
- Today
- Total
똑바른 날개
함수 포인터(function pointer) 본문
반응형
typedef bool (*validateFcn)(int, int);
함수포인터란?
포인터가 다른 변수의 주소를 저장하는 변수라는 것을 배웠다. 이와 유사하게 함수 포인터(function pointer)는 함수를 가리키는 변수다. 즉, 함수의 주소를 저장하는 변수다.
int sum(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
int (*func_ptr)(int, int);
func_ptr = NULL;
func_ptr = ∑
int result = func_ptr(5, 4);
printf("Sum: %d\n", result);
func_ptr = &subtract;
result = func_ptr(5, 4);
printf("Subtract: %d\n", result);
return 0;
}
위 예시에서 int (*func_ptr)(int, int);가 함수포인터로 사용되었고, 이는 함수처럼 사용이 가능하다.
함수포인터의 활용
typedef를 활용한 이쁘게 만들기
위와 같은 두개의 int 인자를 활용하고 bool을 반환하는 validateFcn이라는 함수 포인터를 정의한다.
bool validate(int x, int y, bool (*fcnPtr)(int, int))
bool validate(int x, int y, validateFcn pfcn)
실제로 위 두가지 함수는 같은 의미를 말한다.
- using을 사용
using validateFcn = bool(*)(int, int); c++11
c++ 11부터는 using을 사용해도 된다.
함수포인터는 이제 C에서만 사용되는 구식 문법이다. C++로 넘어오면서 std::function을 주로 사용한다. c++를 사용할수 있는 상황이라면 std::function을 사용하는 것이 좋다.
반응형
'프로그래밍 > c++' 카테고리의 다른 글
| c++ 구조체 memory layout 이란? (1) | 2025.09.01 |
|---|---|
| 제네릭 포인터(generic pointer) (0) | 2025.09.01 |
| RAII 개념 (7) | 2025.07.03 |