공부/C || C++

C/C++ 함수 포인터를 반환하는 함수

sudo 2021. 8. 6. 03:40

Linux에서 제공되는 signal 함수(시그널 등록 함수라고 표현하기도 함)를 보면 특이한 형태를 보인다. 함수 포인터는 알고 있었지만, '함수 포인터를 리턴하는 함수'는 처음 보는 것 같아서 따로 정리하려고 한다.

 

복잡한 것은 아니고 정해진 syntax가 있기 때문에 규칙만 알면 어렵지 않다. 함수 포인터를 리턴하는 함수를 선언하려면 아래와 같은 규칙을 따르면 된다.

함수포인터반환값자료형 (*함수이름(매개변수자료형 매개변수))(함수포인터매개변수자료형1, 함수포인터매개변수자료형2)
{
}

signal.h에 포함된 signal함수를 보자

void (*signal( int sig, void (*handler) (int))) (int);

그렇다면 위의 함수는 아래와 같은 의미이다.

  • 함수 이름은 signal이며 리턴 타입은 함수 포인터
  • 매개변수는 정수(int signo)와 함수 포인터( void (*handler)(int) )
  • 함수 포인터가 가리키는 함수의 매개변수는 int이며, 리턴 타입은 void

 

Reference

https://dojang.io/mod/page/view.php?id=600 

 

C 언어 코딩 도장: 69.4 함수 포인터를 함수의 반환값으로 사용하기

이번에는 함수 포인터를 반환값에 사용해보겠습니다. 반환값으로 사용할 때는 지금까지 사용했던 문법과는 조금 다릅니다. 함수포인터반환값자료형 (*함수이름(매개변수자료형 매개변수))(함

dojang.io