C编程:指向函数的指针

时间:2018-02-01 06:52:03

标签: c

我是C编程的新手。你能阅读并解释下面代码的目的:

typedef void (*func_ptr)();
void func_call (int addr)
{
    func_ptr func;
    func = (func_ptr)(addr);
    func();
}

我不明白func = (func_ptr)(addr);做了什么以及func();的目的 感谢。

2 个答案:

答案 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()调用。

如何在评论中说 - 这是不正确的。你会遇到很大麻烦。