함수포인터가 쓰이는 경우
2019. 11. 13. 21:16ㆍPL/C++
함수포인터는 함수의 주소를 가리키는 포인터다. 일반적으로 다음과 같을 때 사용한다
반환형과 매개변수가 같은 함수의 주소를 가리키게 된다
#include <stdio.h>
#include <stdlib.h>
typedef struct hello {
void (*print_hello)(void);
} Hello;
void hello(void) {
printf("hello world\n");
}
int main(void) {
Hello *h = (Hello *)malloc(sizeof(Hello));
h->print_hello = hello;
h->print_hello();
return 0;
}
보통 C언어는 객체지향 문법을 지원하지 않는다고 알려져 있다. 하지만 C언어에서도 구조체와 함수 포인터를 활용하면 충분히 객체지향으로 프로그래밍을 할 수 있다. 다음은 리눅스 커널에서 함수 포인터로 객체지향을 구현한 코드다.
[출처] https://dojang.io/mod/page/view.php?id=598
시스템 콜을 함수포인터로 접근하는 예제다
'PL > C++' 카테고리의 다른 글
C++ 위임생성자 (0) | 2019.11.14 |
---|---|
함수포인터 (0) | 2019.11.13 |
포인터 배열과 배열 포인터 (0) | 2019.11.13 |
malloc/free와 new/delete 차이 (0) | 2019.11.12 |
cin으로 방어적 프로그래밍 (0) | 2019.10.31 |