c语言函数指针寻址并调用
目的
玩点花哨儿的东西
通过函数指针寻址到另一个函数地址并调用
上代码
#include <stdio.h>
typedef void(*Type)();
// 测试函数1
void Fun1()
{
printf("I am Fun1\n");
}
// 测试函数2
void Fun2()
{
printf("I am Fun2\n");
}
// 主函数
int main(int argc, char **argv)
{
Type fun1 = Fun1;
Type fun2 = Fun2;
int offset1 = &fun1 - (Type*)0; // 地址偏移量
int offset2 = &fun2 - (Type*)0; // 地址偏移量
// 调用 Fun1 函数
fun1();
// 通过 Fun1 函数 寻址到 Fun2 并调用 Fun2 函数
offset1 > offset2 ? (*(&fun1 - (offset1 - offset2)))():
(*(&fun1 + (offset2 - offset1)))();
return 0;
}
调试结果:
_End
随便玩玩。
本文来自博客园,作者:想想就很离谱,转载请注明原文链接:https://www.cnblogs.com/lvvou/p/15689223.html