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

随便玩玩。

posted @ 2021-12-14 17:57  想想就很离谱  阅读(265)  评论(0编辑  收藏  举报