함수포인터가 쓰이는 경우

2019. 11. 13. 21:16PL/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