使用函数指针变量的地址为函数指定函数指针

时间:2015-04-16 23:09:39

标签: c function pointers function-pointers memory-address

我有一个如下定义的函数指针:

typedef void (*FPT)(void);
FPT Fp;

指针变量" Fp"位于地址0x1234 我的功能定义如下:

void myfunc (void)
{
    return;
}

我无法访问符号名称" Fp"但我知道它的地址(0x1234)。现在我如何将myfunc()的地址分配给" Fp" ??

1 个答案:

答案 0 :(得分:1)

这应该做你想要的。

FPT *fpt_pointer = (FPT *)0x1234;

*fpt_pointer = myfunc;

但请注意,拥有像这样的硬编码地址是非常糟糕的做法。我不知道你是否真的打算这样做(不要!),或者你是否只是用这种方式来描述它来简化问题。下次运行程序时很可能会中断(即使没有因地址空间布局随机化而重新编译)。