【C语言】函数指针和指针函数

news2024/11/24 14:08:58

文章目录

    • @[TOC](文章目录)
  • 前言
  • 概述
  • 函数指针
    • 定义:
    • 使用:
    • 回调函数
  • 指针函数

前言

今天学一下函数指针


提示:以下是本篇文章正文内容,下面案例可供参考

概述

函数指针:是一个指向函数的指针,在内存空间中存放的是函数的地址。
在这里插入图片描述
parr是一个指向数组的指针,它存放的是数组的地址
数组指针–存放数组地址的指针
&数组名–得到数组地址
==函数指针–存放函数地址的指针
&函数名–得到函数地址
请添加图片描述

函数指针

定义:

函数指针的本质是一个指针,该指针的地址指向了一个函数,所以它是指向函数的指针。
声明形式:

ret (*p)(args,....)

函数指针:函数的返回值类型(*指针名)(函数的参数列表类型)
请添加图片描述

使用:

请添加图片描述

  • int ret = (*parr)(5,5);
  • 函数名=&函数名
  • “ int (*parr)(int, int) = &add; ” = “int (*parr)(int, int) = add;”
  • “ int ret = (*parr)(5,5);” = “int ret = parr(5,5); ” = "int ret = add(5,5)”
  • 对于int ret = (*parr)(5,5)来说,*是没有意义的。有没有结果都一样
    请添加图片描述

回调函数

回调函数就是一个通过指针函数调用的函数,将其函数指针作为参数传给另一个函数。回调函数是在特定的事件发生时由另外一方调用的。
请添加图片描述

指针函数

指针函数的本质是一个函数,他的返回值是一个指针。
声明形式:

ret *fun(args,....)

在使用指针函数的时候,需要避免返回局部变量指针的情况
请添加图片描述

一般的变量是存储在栈区的,当函数结束,栈区的变量就会被释放,如果我们在函数内部定义一个变量,在使用一个指针去指向这个变量,当函数调用结束时,这个变量可能就会被释放,九三返回了该地址的指针,也不一定能得到正确的值。
如果我们使用static修饰变量,(上面的static sum)那么该变量就变为了静态变量,静态变量是存放在数据段的,他的生命周期存在于整个程序运行期间。只要程序没有结束,该变量就一直存在。
还有一种解决方法是使用全局变量。因为全局变量也是存放于数据段的。

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

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

相关文章

关于小程序内存在违规内容的处理警告

遇到了问题,就记录一下解决过程吧 小程序涉及提供在线观看视频服务,请补充文娱-视频广场类目; 我们的小程序做了一个类似抖音上下滑动观看视频的页面,被警告了,查看了文档, https://developers.weixin.qq.…

C语言程序-计算闰年平年

#include <stdio.h> int main() { int year ,month,day,i1; printf("欢迎使用本程序&#xff0c;使用愉快\n") ; while(i<10){ printf("请输入您需要计算的年\n"); scanf("%d",&year); printf("…

安全高效 | AIRIOT智慧工地管理解决方案

建筑工地施工材料、机械设备、工程车、人员各个环节管理相对复杂、建筑业也是安全事故频发的高危行业&#xff0c;安全管控尤为重要。建筑施工单位想要保障安全生产&#xff0c;做好能源消耗管控降低生产成本&#xff0c;需要解决掉很多现状问题&#xff1a;1、工地施工作业人员…

【Leetcode 剑指Offer】第 11 天 双指针(简单)

双指针剑指 Offer 18. 删除链表的节点剑指 Offer 18. 删除链表的节点 给定单向链表的头指针和一个要删除的节点的值&#xff0c;定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head [4,5,1,9], val 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二…

服务器(centos7.6)已经安装了宝塔面板,想在里面安装一个SVN工具(subversion),应该如何操作呢?

首先&#xff0c;在登录进入宝塔面板&#xff0c;然后点击左侧终端&#xff0c;进入终端界面&#xff0c;如下图&#xff1a;------------------------------------------如果是第一次使用会弹出输入服务器用户名和密码&#xff0c;此时输入root账号和密码&#xff0c;即可进入…

2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等

文档抽取任务Label Studio使用指南 1.基于Label studio的训练数据标注指南&#xff1a;信息抽取&#xff08;实体关系抽取&#xff09;、文本分类等 2.基于Label studio的训练数据标注指南&#xff1a;&#xff08;智能文档&#xff09;文档抽取任务、PDF、表格、图片抽取标注等…

Python3-集合

Python3 集合 集合&#xff08;set&#xff09;是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合&#xff0c;注意&#xff1a;创建一个空集合必须用 set() 而不是 { }&#xff0c;因为 { } 是用来创建一个空字典。 创建格式&#xff1a; parame …

奇淫技巧:熟练使用Fetch一个干翻PostMan的顶级技巧

一&#xff1a;如何使用fetch重新发送一个接口请求&#xff1f; 按照如下的请求进行复制 fetch("https://bip-test.yyuap.com/mdf-node/uniform/user/checkAuthByCode?terminalType1&serviceCodeorderList&codeuserdef_filterItem,userdef_schemaSetting"…

《C++ Primer》第十章 泛型算法

《C Primer》第十章 泛型算法 10.1 概述 大多数算法定义在头文件algorithm中&#xff0c;还有一些算法在numeric中。例如标准库算法find: int val 42;//即将查找的值 //如果在vec中找到想要的元素&#xff0c;则返回结果指向它&#xff0c;否则返回vec.cend() auto result …

小样本学习--学习记录

之前在做课题的时候&#xff0c;把数据不均衡和小样本的概念混淆了&#xff0c;昨天看了一篇论文&#xff1a;《 面向小样本数据的机器学习方法研究综述 &#xff08;陈良臣&#xff0c;傅德印&#xff09;》 &#xff0c;这篇论文写的非常清晰。推荐阅读。 网上的一些综述整理…

2月VR大数据:硬件份额变化不大,PS VR2首发游戏超50款

Hello大家好&#xff0c;每月一期的VR内容/硬件大数据统计又和大家见面了。 想了解VR软硬件行情么&#xff1f;关注这里就对了。我们会统计Steam平台的用户及内容等数据&#xff0c;每月初准时为你推送&#xff0c;不要错过喔&#xff01;本数据报告包含&#xff1a;Steam VR硬…

擅长捉弄的内存马同学:Valve内存马

前言 内存马的文章已经很久没有更新过了&#xff0c; 这篇文章不太适合想直接学习利用Valve内存马的师傅 &#xff0c;因为我这篇文章可能会有大篇笔墨去说Tomcat容器&#xff0c;至于原因就是我想更深入的了解一些Tomcat&#xff0c;而Valve内存马属于已经被师傅们玩烂了的一…

现场设备发生故障,如何第一时间通知相关人员?

一、前言 虹科物联网HMI作为一站式物联网解决方案&#xff0c;致力于解决用户在数据采集和可视化、远程监控、边缘计算、软PLC、数据存储&#xff08;SQL数据库和CSV文件&#xff09;、数据上云&#xff08;OPC UA、MQTT&#xff09;等方面的需求&#xff0c;帮助企业快速实现…

运营数据分析模型—用户画像

用户画像 伴随着大数据应用的讨论、创新,个性化技术成为了一个重要落地点。相比传统的线下会员管理、问卷调查、购物篮分析,大数据第一次使得企业能够通过互联网便利地获取用户更为广泛的反馈信息,为进一步精准、快速地分析用户行为习惯、消费习惯等重要商业信息,提供了足…

SpringCloud系列(十四)[分布式搜索引擎篇] - 索引库及文档的增删改查操作

本文主要介绍一下索引库及文档的一些增删改查操作, 以下都是一些常用的操作, 无需死记硬背, 只需要用到的时候常翻阅即可;   当然学习索引库和文档的一些基本操作还是要先在虚拟机启动一下 elasticsearch 及 kibana, 启动成功后输入 172.16.xx.xxx:5601 后出现以下界面即启动成…

信创-东方通和达梦适配

1 TLQ8.0 简单的例子&#xff0c;发送MQ&#xff0c;然后收消息连接是一样的&#xff0c;要不断去拉取数据消费的public static void main(String[] args) {//发送消息的目的队列String queName "lq";//连接工厂类QueueConnectionFactory queueConnectionFactory n…

制造业仓库很乱,该如何有效的管理呢?

首先来统计一下制造业仓库很乱的问题&#xff1a; 1.管理多仓库/多店铺&#xff0c;库存不清2.库存控制不合理&#xff0c;出现滞销与脱销的情况3.库存盘点时间长&#xff0c;数据不准确在传统管理模式下&#xff0c;一些中小型制造业的仓库&#xff0c;物料摆放位置、明细等都…

TOOLS_Seaborn相关性可视化分析示例

TOOLS_Seaborn相关性可视化分析示例 相关性应用场景 如要回答 推测 网站留存、观看时长、收藏次数、转发次数、关注数之间是否存在相关性&#xff0c;以及相关性有多大的问题&#xff1b; 对于更有关注的留存&#xff0c;可以尝试分析一个与其相关性比较大的因素&#xff0c…

【大数据专题】大数据理论基础01之分布式CPA原理深入理解

分布式CAP定理 CAP定理又称CAP原则&#xff0c;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用性&#xff09;、Partition tolerance&#xff08;分区容错性&#xff09;&#xff0c;最多只能同时三个特性中…

编写一个Vue插件,上传NPM官网开源使用

插件开发及上传NPM流程 完成组件封装、组件完成统一封装成插件插件入口文件配置src/main.js 中引入口文件、安装插件配置 package.json 文件npm run lib 打包umd.min.js 配置到 package.json登录 NPM 上传插件npm i 安装引入使用 一、编写好组件 二、插件入口文件配置 plugins/…