如何理解函数函数参数中的星号(*)?
How to understand star sign(*) in function's function argument?
这是我困惑的:
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*),
相关文章:
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- Lambda 到函数指针适配器的理解
- 不理解此递归函数中的返回 (C++)
- 为什么不调用预期的函数?我是否对类型特征的理解不正确?
- "virtual"对C++析构函数有何影响?
- 我在理解 AVX 随机内部函数如何为 8 位时遇到一些问题
- 无法理解包装类的构造函数的声明
- 如何使用类中的函数从 main 打印变量,帮助理解 OOP c++
- C++ 友元函数在内存位置上有何不同?
- 如何理解哪个递归函数程序需要
- 需要帮助理解 2D 数组并将其传递到函数中
- 我对变量在递归函数中如何工作的理解是否正确?
- 无法理解编译器在复制构造函数上引发的错误消息
- 如何理解函数定义作为参数
- 无法理解代码的特定片段:这是一个函数,只是一行还是什么
- 使用 uftrace 分析C++程序后如何理解 2 个 main() 函数
- 我的运算符重载友元函数无法理解模板类型 T 的问题
- 我对GLM lookAt函数的理解不一致
- 复制构造函数的理解