int Add(int a, int b)
{
return a+b;
}
int main()
{
int c;
int (*p)(int,int);
p = &Add;
c = p(2,3);
printf("%d", c);
}
如上所示,我在函数指针中使用了Add。我希望能够在“& Add”的位置使用地址,例如
int main()
{
int c;
int (*p)(int,int);
p = 0x123456;
c = p(2,3);
printf("%d", c);
}
我该怎么做?
答案 0 :(得分:0)
您只需要将常量强制转换为函数指针类型。像这样
typedef int(*func_t)(int,int);
int main()
{
int c;
func_t p;
p = (func_t)0x123456;
c = p(2,3);
printf("%d", c);
}
我鼓励你像我一样输入你的函数类型,因为这样可以更容易理解。
和往常一样,我希望您知道自己在做什么,并且知道该地址是指具有该签名的函数的地址,否则您将调用未定义的行为。
答案 1 :(得分:0)
与通过转换地址声明函数指针的方式相同。
int (*p)(int,int);
p = ( int(*)(int,int) ) 0x123456;