函数名的实质

函数名的实质就是函数的首地址
(1)函数名在c语言中的理解方法和变量名其实没区别。编译器会把这个函数的函数体对应的代码
段和这个函数的函数名(实质是符号)对应起来,等我们在使用这个函数名符号时,编译器会将
函数的函数体实际上做替换。因为函数体都不止4字节,而函数名这个符号只能对应1个地址,所
以实际对应的是函数体那一个代码段的首地址。
(2)拿c语言中的语法来讲,函数名就是这个函数的函数指针。

当我们在函数里面想要跳转到某一个地址运行时,可以直接用一个函数类型强转地址运行,即可以跳转到该地址运行。

1.首先来认识一个新的数据类型,如:void (*)(void)是一个指向函数的指针,且这个函数无返回值,无参数。
2.然后给他外层加个括号,如:(void (*)(void))
3.接着把0x100000强制转化为一个函数指针,即:(void(*)(void))0x100000
4.最后就是调用这个函数

((void) (*)(void))0x10000000();//可以到地址为0x100000处去执行


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值