如何理解函数函数参数中的星号(*)?

How to understand star sign(*) in function's function argument?

本文关键字:函数 何理解 参数      更新时间:2023-10-16

这是我困惑的:

extern int sigsegv_leave_handler (
    void (*continuation) (void*, void*, void*), 
    void* cont_arg1, void* cont_arg2, void* cont_arg3);

我不明白*continuation*有什么用*continuation

更新

完整的代码在linux的"/usr/include/sigsegv.h"中

更新

我使用如下sigsegv_leave_handler

void cont(void *fault_addr, void *arg1, void *arg2) {
//    rb_raise(rb_eTypeError, "type err");
    rraise(SEGV, NULL);
}
int handle_segv(void *fault_addr, int serious) {
    sigsegv_leave_handler(cont, fault_addr, NULL, NULL);
}

void (*continuation) (void*, void*, void*)

只是一个声明,其中 continuation 是一个指向函数的指针,该函数采用 3 个void *指针并且不返回任何内容(使用void返回类型)。

这就是你声明指向函数的指针的方式,

RETURN_TYPE (*IDENTIFIER)(... PARAMETERS WITH THEIR TYPES AS USUAL ...);

一个有用的工具是 C ↔

乱码英语
extern int sigsegv_leave_handler (void (*) (void*, void*, void*), void* , void* , void* );

将sigsegv_leave_handler声明为 extern 函数(指向函数的指针(指向

void 的指针、指向 void 的指针、指向 void 的指针)返回 void、指向 void 的指针、指向 void 的指针、返回 int 的指针

或者换句话说,sigsegv_leave_handler()接受 4 个参数并返回一个int

1) pointer to a function which takes 3 void * pointers and returns void
void (*f) (void*, void*, void*) 
2) pointer to void
void *
3) pointer to void
void *
4) pointer to void
void *

*延续中的*有什么用?

显示参数是指向函数的指针。

void (*continuation) (void*, void*, void*),