*(int*)&p

简介: Look at following code:void func(){ // ...}int main(){ void (*p)(); *(int*)&p = (int)func; (*p)(); return 0;}分析:void(p)();这行代码定义了一个指针变量p,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的调用。
目录
相关文章
|
供应链 搜索推荐 前端开发
计算机专业毕业论文设计与实现(论文+源码)_kaic
计算机专业毕业论文设计与实现(论文+源码)_kaic
|
传感器 API 人机交互
MEMS
MEMS
224 1
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
Genesis:卡内基梅隆大学联合 20 多所研究机构开源生成式物理引擎,能够模拟各种材料、物体和物理运动现象
Genesis是由卡内基梅隆大学联合20多所研究机构开源的生成式物理引擎,能够模拟世界万物,具有高度的物理准确性和快速的模拟速度,适用于机器人仿真、游戏开发、电影特效制作等多个领域。
470 21
Genesis:卡内基梅隆大学联合 20 多所研究机构开源生成式物理引擎,能够模拟各种材料、物体和物理运动现象
|
文字识别 算法 API
视觉智能开放平台产品使用合集之uniapp框架如何使用阿里云金融级人脸识别
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
341 0
|
缓存 网络协议 安全
DNS缓存中毒
【8月更文挑战第20天】
506 1
|
11月前
|
监控 搜索推荐 API
亚马逊商品API接口:运用及收益
作为全球最大的电商平台之一,亚马逊不仅提供了丰富的商品选择,还通过其开放平台为开发者提供了多种API接口,特别是商品详情API接口。本文将深入探讨该接口的运用及其带来的商业机会和收益,包括提高用户体验、降低运营成本、增强市场竞争力和创新业务模式等方面。
249 7
|
开发框架 自然语言处理 前端开发
Fastadmin:乘时代热点之风,以 thinkphp 与 bootstrap 融合之力,开启高效后台开发新征程
【8月更文挑战第22天】在互联网飞速发展的今天,Fastadmin作为一款基于ThinkPHP与Bootstrap的高效后台开发框架,为开发者带来了前所未有的便捷。它融合两者优势,不仅利用ThinkPHP快速构建稳定Web应用,还借助Bootstrap实现美观的响应式界面设计。Fastadmin内置丰富的功能模块与插件,如权限管理、数据表格等,大幅提高开发效率。同时支持多语言,便于国际化应用开发。其清晰的代码结构易于扩展与维护,无论是小项目还是大型应用,都能助力开发者快速构建高质量后台系统。
325 2
栈的几个经典应用,真的绝了
文章总结了栈的几个经典应用场景,包括使用两个栈来实现队列的功能以及利用栈进行对称匹配,并通过LeetCode上的题目示例展示了栈在实际问题中的应用。
栈的几个经典应用,真的绝了
|
JavaScript
Vue 3:检验手机号码的逻辑
Vue 3:检验手机号码的逻辑