#include <stdio.h>
int (*test)(int);
int Print(int num)
{
printf("The num is %d\n",num);
}
int main()
{
test = Print;
(*test)(1);
printf("The addr is %p\n", test);
(*(int(*)())0x804841d)(2);
}
#include <stdio.h>
typedef int (*pF)(int);
int Print(int num)
{
printf("The num is %d\n",num);
}
int main()
{
pF test = Print;
(*test)(1);
printf("The addr is %p\n", test);
(*(pF)0x804841d)(2);
}
解析:
pF test = Print使用重命名以后可以直接pF定义test为int(*)(int)类型,并且将Print函数赋值到函数指针test中去,而后面的(*(int(*)())0x804841d)(2)可以变成(*(pF)0x804841d)(2)也比之前的简单许多,由于pF类型就是int(*)(int)类型,所以只需将这个地址强制转换成为pF类型并且解引用即可。