signal 함수 와 함수 포인터
글쓴이: skycloud / 작성시간: 화, 2020/10/27 - 10:26오후
void (*signal(int signum, void (*handler)(int)))(int);
singal 함수가 이렇게 정의 되어있더군요 사용하는데야 그냥
signal(number, func)이렇게 사용하면 문제없지만
함수 포인터에 해당되는 부분이 파라미터를 가지는 것은 처음봐서 약간 이해가 안갑니다.
void (*ptr)(int)가 매개변수가 int이고 반환형이 void인 함수 포인터 ptr을 말하는데
저위에거는 해석하는게 약간 애매하더라구요
int형 매개변수를 받는 singal이면서 다시 매개변수 2개를 받는다? 어떻게 하면 더 잘 이해할 수 있을까요?
Forums:
typedef void (*sighandler_t)
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
이렇게 이해 하시면 됩니다.
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
감사합니다.
감사합니다.
Quote:void (*ptr)(int)가 매개변수가
위와 같은 타입의 함수포인터를 반환하는, 매개변수 없는 함수 func을 표현하려면,
func()이 매개변수로 int 두 개를 받도록 수정한다면,
func()의 두 번째 매개변수가 앞서 표현하신 함수포인터 타입으로 바뀌면,
이젠 func이 int와 함수포인터를 매개변수로 받고 반환값으로 함수포인터를 돌려주는 함수임이 눈에 보이죠. 질문글을 보니, 함수포인터를 반환하는 함수의 프로토타입에 대한 오해가 있어 애매하게 느끼시는 것 같습니다.
감사합니다.
감사합니다.
댓글 달기