我是C
编程的新手。你能阅读并解释下面代码的目的:
typedef void (*func_ptr)();
void func_call (int addr)
{
func_ptr func;
func = (func_ptr)(addr);
func();
}
我不明白func = (func_ptr)(addr);
做了什么以及func();
的目的
感谢。
答案 0 :(得分:3)
第一行
typedef void (*func_ptr)();
将func ptr
声明为void (*)()
类型的别名。现在func_ptr
可用于在程序中声明一个函数指针。因此
func_ptr func;
将func
声明为类型void (*)()
的函数指针。它相当于
void (*func)();
现在这个函数指针可以指向一个函数,然后可以用来调用该函数。我想addr
用作函数的地址,然后在语句中将此地址转换为func_ptr
的类型
func = (func_ptr)(addr);
func()
用于调用该函数。
答案 1 :(得分:0)
好。你有func_ptr
定义了一个指向函数void [name] ()
的指针。
您的函数func_call (int addr)
创建变量func
并分配给addr
的参数func_ptr
。然后由func()
调用。
如何在评论中说 - 这是不正确的。你会遇到很大麻烦。