int foo(char *c) {...}
main() {
int (*thud)(void *);
thud = (int (*)(void *))(foo);
}
在评估作业期间实际发生了什么?
foo
转换类型和;之间有区别 强制转换类型是一个指针并且foo
是一个函数。那么,编译器是否将 ' (foo)
' 中的内容转换为指向的指针,foo
然后才进行强制转换?因为似乎没有其他任何意义;另一种选择是将函数本身转换为指向获取 avoid*
并返回int
a 的函数的指针,据我所知,函数是内存中一段代码的标签,因此不能成为指针,即一个变量。