相关疑难解决方法(0)

can void*用于存储函数指针?

void*以这样的方式定义,它可以指向任何东西.那么它可以用来指向一个函数(int send())吗?

int send();
void* p = send;
Run Code Online (Sandbox Code Playgroud)

可能吗?当我这样使用时,它没有向我显示错误原因?如果没有,有没有办法将所有指针存储在一个变量中?

c c++ function-pointers void-pointers

14
推荐指数
2
解决办法
3079
查看次数

C:函数指针转换甚至是什么?

假设有人想创建一个可以容纳多个函数指针和不同类型的数组.他将如何这样做呢?也许一个void指针数组可以工作?...事实证明,不是因为为了使用存储在void指针中的函数,你必须将它们(void指针)转换/转换回函数指针和...

"函数指针和void指针之间的转换是不可能的.void*从不是函数指针的通用指针类型,仅用于对象指针.它们不是兼容的类型.

[...]你可以在void*和一个函数指针之间进行转换,但是会发生什么是未定义的行为.您将依赖系统特定的非标准扩展."

- @ Lundin(这里)

代替...

稍微好一点的是使用函数指针类型,如void(*)(void)作为泛型指针.您可以转换为/从不同的函数指针转换,将发生的是特定于编译器(实现定义的行为).也就是说,代码仍然是不可移植的,但至少你不会冒程序崩溃来调用未定义的行为.

- @ Lundin(这里)


也就是说,从一个函数指针转换到另一个函数指针甚至意味着什么呢?

有人可以解释一下吗.也许是一个例子.

c function-pointers type-conversion

1
推荐指数
1
解决办法
98
查看次数