从汇编角度看C/C++函数指针与函数的调用差异

         函数指针本质上是一个指针变量,只不过这个变量保存的地址是一个函数的地址,那么直接调用函数和通过函数指针调用有没有区别呢?答案是有的,下面的代码是一个直接调用函数和通过指针调用函数的例子,使用gdb反汇编main函数可以发现,直接调用函数对应的汇编指令是call 函数地址,而通过指针调用函数时,首先将函数的地址赋值给一个通用寄存器,call指令通过这个寄存器跳转到对应的函数,相对于直接调用,指针调用有个中转的过程。

#include <stdio.h>void f()
{printf("hello %d\n", 1);
}int main(int argc, char **argv)
{f();void (*g)() = f;g();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue开发的时候,目录名、文件名、函数名、变量名、数据库字段等命名规范

在Vue开发中&#xff0c;函数名、文件名、目录名、变量名、数据库字段名的命名规范各有其特点&#xff0c;以下是根据Vue及JavaScript的命名习惯进行的详细解答&#xff1a; 分析 目录名 通常使用kebab-case&#xff08;短横线命名法&#xff09;&#xff0c;全部小写&#x…

AIGC底层技术揭秘

随着人工智能技术的发展&#xff0c;AI生成内容&#xff08;Artificial Intelligence Generated Content&#xff0c;简称AIGC&#xff09;正在逐渐改变我们的生活。从自动生成的文章、图片到音乐和视频&#xff0c;AIGC正在成为内容创造的新引擎。本文将深入探讨支撑AIGC技术的…

什么是MySQL索引?为什么要有索引?

什么是MySQL索引&#xff1f;为什么要有索引&#xff1f; MySQL索引是一种数据结构&#xff0c;用于帮助MySQL高效地获取数据。索引通过在数据库表的列上创建有序的数据结构&#xff0c;使得数据库系统能够快速定位到所需的数据&#xff0c;而不需要扫描整个表。这种数据结构通…

mac电脑设置chrome浏览器语言切换为日语英语等不生效问题

在chrome中设置了语言&#xff0c;并且已经置顶了&#xff0c;但是不生效&#xff0c;在windows上直接有设置当前语言为chrome显示语言&#xff0c;但是mac上没有。 解决办法 在系统里面有一个单独给chrome设置语言的&#xff1a; 单独给它设定成指定的语言&#xff0c;然后重…

【每日一题】LeetCode - 判断回文数

今天我们来看一道经典的回文数题目&#xff0c;给定一个整数 x &#xff0c;判断它是否是回文整数。如果 x 是一个回文数&#xff0c;则返回 true&#xff0c;否则返回 false。 回文数 是指从左往右读和从右往左读都相同的整数。例如&#xff0c;121 是回文&#xff0c;而 123 …

sh与bash的区别

sh与bash的区别 结论&#xff1a;对于一般开发者&#xff0c;没有区别&#xff1b;对于要使脚本兼容较老系统&#xff0c;或者兼容其他shell&#xff08;如ksh&#xff0c;dash&#xff09;&#xff0c;那么意义可能很重大&#xff0c;要确保自己代码没有bash扩展的特性。 区…

Spring Boot整合Stripe订阅支付指南

在当今的在线支付市场中&#xff0c;Stripe 作为一款一体化的全球支付平台&#xff0c;因其易用性和广泛的支付方式支持&#xff0c;得到了许多企业的青睐。本文将详细介绍如何在 Spring Boot 项目中整合 Stripe 实现订阅支付功能。 1.Stripe简介 Stripe 是一家为个人或公司提…

企业家及人物介绍稿怎么写?有哪些商业财经报纸或媒体发布渠道?

【本篇由 言同数字 原创】撰写企业家介绍稿件时&#xff0c;可以遵循以下结构和技巧&#xff0c;以确保专业性和可操作性&#xff1a; 1. 引言 吸引眼球的开头&#xff1a;使用引人注目的事实或故事&#xff0c;引导读者兴趣。例如&#xff0c;引用企业家的名言或重要成就。 …

全桥PFC电路及MATLAB仿真

一、PFC电路原理概述 PFC全称“Power Factor Correction”&#xff08;功率因数校正&#xff09;&#xff0c;PFC电路即能对功率因数进行校正&#xff0c;或者说是能提高功率因数的电路。是开关电源中很常见的电路。功率因数是用来描述电力系统中有功功率&#xff08;实际使用…

【GESP】C++一级练习BCQM3145,奇数求和

一级知识点for循环分和支语句if的应用的练习题。难度不大&#xff0c;综合性略微提升&#xff0c;感觉接近但略低于一级真题水平。 题目题解详见&#xff1a;https://www.coderli.com/gesp-1-bcqm3145/ https://www.coderli.com/gesp-1-bcqm3145/https://www.coderli.com/ges…

架构师备考专栏-导航页

简介 架构师备考专栏——软考系统架构师考试的学习宝典&#xff0c;集合了全面覆盖架构师考试大纲的精华文章。每篇文章都为本人手输,并校对数遍后发表&#xff0c;在此我保障每篇文章的质量绝对过关。诚邀对架构师软考感兴趣的朋友们收藏此页面&#xff0c;并根据个人所需高效…

来个Oracle一键检查

启停、切换、升级、网络改造等场景下&#xff0c;需要对数据库有些基本检查操作&#xff0c;确认当前是否运行正常&#xff0c;主打一个简单和一键搞定。 #!/bin/bash## 实例个数 告警日志 实例状态 会话 活动会话 锁 集群状态 服务状态 磁盘空间 侦听日志 ## linux vmstat 2 …

springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip

车辆管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了车辆管理系统的开发全过程。通过分析车辆管理系统管理的不足&#xff0c;创建了一个计算机管理车辆管理系统的方案。文章介绍了车辆管理系统的系统…

HTML标签汇总详解

一、前言 HTML 标签是用于定义网页内容结构和表现形式的标记。每个标签都有特定的含义和用途&#xff0c;通过不同的标签组合&#xff0c;可以构建出丰富多彩的网页。 二、标签的表现形式 2.1 单标签与双标签 根据标签的写法不同&#xff0c;可以将标签分为单标签和双标签。…

如何修改IP地址:全面指南

在现代互联网使用中&#xff0c;IP地址作为设备间通信的基本标识符&#xff0c;起着至关重要的作用。了解如何修改自己的IP地址不仅能帮助用户保护隐私&#xff0c;还能解决某些网站访问限制的问题。本文将详细介绍修改IP地址的不同方法&#xff0c;包括动态IP和静态IP的修改&a…

大数据-190 Elasticsearch - ELK 日志分析实战 - 配置启动 Filebeat Logstash

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

【力扣热题100】[Java版]刷题笔记-1. 两数之和

题目&#xff1a; 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以…

为微信小程序换皮肤之配置vant

微信小程序自带的控件虽然具有很好的通用性和简洁性&#xff0c;但在面对一些复杂的交互场景和个性化的设计需求时&#xff0c;可能会显得力不从心。其功能的相对基础使得开发者在实现诸如多步骤复杂表单提交、实时数据交互与可视化展示、高度定制化的界面布局等方面&#xff0…

vue3 选中对话框时,对话框右侧出一个箭头

先看下做出的效果&#xff1a; html代码&#xff0c;其中listPlan.records是后台拿到的数据进行遍历 <template><ul class"list"><li style"height: 180px;width: 95%":key"index"v-for"(item, index) in listPlan.record…

任务看板是什么?如何选择合适的任务看板工具?

一、任务看板是什么&#xff1f; 任务看板是一种可视化的项目管理工具&#xff0c;它通常以板状的形式呈现&#xff0c;将任务以卡片的形式展示在不同的列中&#xff0c;每一列代表任务的不同状态。例如&#xff0c;待办事项、进行中、已完成等。任务看板能够帮助团队成员清晰…