*(int*)&p

Look at following code:

void func()
{
    // ...
}
int main()
{
    void (*p)();
    *(int*)&p = (int)func;
    (*p)();
    return 0;
}

分析: void(p)(); 这行代码定义了一个指针变量p,p指向一个函数。这个函数的参数和返回值都为void。 &p是求指针变量p本身的地址。 (int)&p表示将变量p本身的地址强制类型转换成指向int类型的指针。

  • ( int * )&p 表示取出这个指针里面的值,就是指针p保存的值。 (int)func表示将函数的入口地址转换成int类型的数据。 所以* ( int * )&p = (int)func,就是将函数的入口地址复制给p。所以(*p)();就是表示对函数func的调用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏史上最简单的Spring Cloud教程

Java 代理模式

什么是代理 代理是一种设计模式,它的核心思想,是将对目标的访问转移到代理对象上。这样做的好处就是,目标对象在不改变代码的情况下,可以通过代理对象加一些额外的功能...

22580
来自专栏java小白

LinkedHashMap的accessOrder

21290
来自专栏武军超python专栏

2018-7-18pythoh中函数的参数,返回值,变量,和递归

********************************************************************************...

15340
来自专栏用户2442861的专栏

C++ STL空间配置源码分析以及实现二

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

10720
来自专栏流媒体

C++ string

9020
来自专栏GreenLeaves

JavaScript之面向对象学习五(JS原生引用类型Array、Object、String等等)的原型对象介绍

1、原型模式的重要性不仅仅体现在创建自定义类型方面,就连所有的原生的引用类型(Obejct、Array、String等等)都在构造函数的原型上定义方法和属性。如...

223100
来自专栏HTML5学堂

PHP入门-常量基本规则

PHP入门-常量基本规则 HTML5学堂:本文是PHP的入门用文章,主要介绍PHP的常量的基本规则以及定义和获取方法。 前几天把PHP的基本语法以及变量的基本规...

392150
来自专栏http://www.cnblogs.com

python 反射

通过字符串映射或修改程序运行时的状态、属性、方法, 有以下4个方法: hasattr(obj,name_str) 判断一个对象obj里是否有对应的name...

39590
来自专栏我是业余自学C/C++的

redis_3.0.7_sds.c_sdsIncrLen()

13120
来自专栏人工智能LeadAI

Python中defaultdict用法

defaultdict类的初始化函数接受一个类型作为参数,当所访问的键不存在的时候,可以实例化一个值作为默认值

11340

扫码关注云+社区

领取腾讯云代金券