C语言基础—函数指针与指针函数
函数指针
定义
函数指针本质上是指针,它是函数的指针(定义了一个指针变量,变量中存储了函数的地址)。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。这里函数名就代表入口地址。
函数的指针存在的意义:
-
让函数多了一种调用方式
-
函数指针可以作为形参,可以形式调用(回调函数)
语法:
返回值类型 (*变量名)(形参列表)
举例:
int (*p)(int a, int b);
函数指针的初始化
①定义的同时赋值
②先定义,后赋值
注意:
1.函数指针指向的函数要和函数指针定义的返回值类型,形参列表对应,否则编译报错2.函数指针是指针,但不能指针运算,如p++等,没有实际意义
3.函数指针作为形参,可以形成回调
4.函数指针作为形参,函数调用时的实参只能是与之对应的函数名,不能带小括号()
5.函数指针的形参列表中的变量名可以省略
指针函数
定义
本质上是函数,这个函数的返回值类型是指针,这个函数称之为指针函数。
语法:
返回值类型 *变量名 (形参列表)
{函数体;return 指针变量;
}
举例:
int *get(int a)
{int *b = &a;return b;
}int main()
{int *a = get(5);printf("%d\n",*a);
}
注意:
在函数中不要直接返回一个局部变量的地址,因为函数调用完毕后,局部变量会被回收,使得返回的地址就不明确,此时返回的指针就是野指针。
解决方案:
如果非要访问,可以给这个局部变量添加static可以延长它的生命周期,从而避免野指针(尽量少用,因为内存泄漏)
最后复习一下二维数组访问方式

相关文章:
C语言基础—函数指针与指针函数
函数指针 定义 函数指针本质上是指针,它是函数的指针(定义了一个指针变量,变量中存储了函数的地址)。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。这里函数名就代表入口地址。 函…...
用DrissionPage升级网易云音乐爬虫:更稳定高效地获取歌单音乐(附原码)
一、传统爬虫的痛点分析 原代码使用requests re的方案存在以下局限性: 动态内容缺失:无法获取JavaScript渲染后的页面内容 维护成本高:网页结构变化需频繁调整正则表达式 反爬易触发:简单请求头伪造容易被识别 资源消耗大&am…...
OpenCV图像拼接(5)构建图像的拉普拉斯金字塔 (Laplacian Pyramid)
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::createLaplacePyr 是 OpenCV 中的一个函数,用于构建图像的拉普拉斯金字塔 (Laplacian Pyramid)。拉普拉斯金字塔是一种多…...
03 Python 基础:数据类型、运算符与流程控制解析
文章目录 一、数据类型 内置的六大类数字类型整数类型 int浮点数 float布尔 bool字符串 str 变量命名 二、数字类型的相互转换显式类型的转换整数,浮点数,复数 之间的显式转换 隐式类型的转换 三、标识符算术运算符比较运算符逻辑运算符位运算符赋值运算…...
通俗一点介绍什么是场外期权交易 ?
场外期权是交易所以外的市场进行交易的期权,主要由期货公司、证券公司等金融机构根据客户具体要求进行设计,最终由期货公司等机构与客户签订协议的形式进行,通俗一点理解场外期权就是股票做多的玩法交易,下文为大家科普通俗一点介…...
蓝桥杯备考:图的遍历
这道题乍一看好像没什么不对的,但是!但是!结点最大可以到10的5次方!!!我们递归的时间复杂度是很高的,我们正常遍历是肯定通过不了的,不信的话我们试一下 #include <iostream>…...
【机器学习/大模型/八股文 面经 (一)】
1. PPO算法中使用GAE的好处以及参数γ和λ的作用是什么? 参考答案: GAE(Generalized Advantage Estimation) 的优势在于通过指数加权多步TD误差,平衡优势估计的偏差与方差,提升策略优化的稳定性。γ(折扣因子):控制未来奖励的衰减程度,值越大表示更关注长期收益。λ…...
IIS漏洞攻略
一,PUT漏洞 1,在windows server 2003 中开启 WebDAV 和写权限,然后访问并使用BP抓包 2,使用PUT上传一个木马文件,后缀要改成其他格式 3,将上传的木马文件的内容写入到asp文件中,然后进行连接即…...
C++《红黑树》
在之前的篇章当中我们已经了解了基于二叉搜索树的AVL树,那么接下来在本篇当中将继续来学习另一种基于二叉搜索树的树状结构——红黑树,在此和之前学习AVL树类似还是通过先了解红黑树是什么以及红黑树的结构特点,接下来在试着实现红黑树的结构…...
struts2框架漏洞攻略
S2-057远程执⾏代码漏洞 环境 vulhub靶场 /struts2/s2-057 漏洞简介 漏洞产⽣于⽹站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置 或使⽤通配符namespace时,可能会导致远程代码执⾏漏洞的发⽣。同样也可能因为url标签没有设置…...
8662 234的和
8662 234的和 ⭐️难度:中等 🌟考点:模拟、二维前缀和 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int[] a ne…...
Baklib企业CMS的核心功能是什么?
企业CMS标准化发布解析 现代企业内容管理中,标准化发布模板与元数据管理构成了高效运营的基石。通过预置行业适配的文档框架与格式规范,系统能够显著降低内容创建门槛,同时确保品牌视觉与信息架构的一致性。以某智能硬件厂商为例,…...
综合章节:游戏功能扩展与深度开发
模块一:外星人管理与碰撞系统 目标:生成动态外星人群,处理移动、触边检测与子弹碰撞。 # alien.py(基础外星人类) class Alien(Sprite):def __init__(self, game):super().__init__()self.screen game.screenself.i…...
【大模型】DeepSeek攻击原理和效果解析
前几天看到群友提到一个现象,在试图询问知识库中某个人信息时,意外触发了DeepSeek的隐私保护机制,使模型拒绝回答该问题。另有群友提到,Ollama上有人发布过DeepSeek移除模型内置审查机制的版本。于是顺着这条线索,对相…...
金融行业 UE/UI 设计:解锁高效体验,重塑行业界面
在数字化浪潮中,金融行业的竞争日益激烈,用户体验(UE)和用户界面(UI)设计成为企业脱颖而出的关键。兰亭妙微凭借丰富的经验和创新的方法,为金融行业打造了一套行之有效的 UE/UI 解决方案&#x…...
在 Qt 中,不带参数或整形的参选的信号能够从 std::thread 发送成功,而带枚举离线的信号却发送失败
在 Qt 中,不带参数或整形的参选的信号能够从 std::thread 发送成功,而带枚举离线的信号却发送失败 当信号和槽在不同线程时,默认使用 队列连接(Qt::QueuedConnection),信号会被放入接收线程的事件队列&…...
从报错到成功:Mermaid 流程图语法避坑指南✨
🚀 从报错到成功:Mermaid 流程图语法避坑指南 🚀 🚨 问题背景 在开发文档或技术博客中,我们经常使用 Mermaid 流程图 来可视化代码逻辑。但最近我在尝试绘制一个 Java Stream 转换流程图时,遭遇了以下报错…...
串口通信接口标准 RS232/422/485
串口通信接口标准 RS232、RS422、R485 目录 串口通信接口标准 4 1 RS232 4 1.1 引言 4 1.2 协议原理 4 1.3 电平标准 5 1.4 应用场景 5 1.5 优缺点 6 1.5.1 优点 6 1.5.2 缺点 6 2 RS422 7 2.1 背景介绍 7 2.2 协议原理 7 2.2.1 差分信号传输 7 2.2.2 电平标准…...
开源链动2+1模式与AI智能名片赋能的S2B2C共享经济新生态
摘要:在数字经济浪潮中,共享经济平台正重塑个体服务者的职业生态。本文基于平台经济理论与创新扩散模型,深入探讨"开源链动21模式"对资源共享效率的革命性提升,解析AI智能名片与S2B2C商城小程序源码的技术赋能机制。通过…...
【论文#目标检测】YOLO9000: Better, Faster, Stronger
目录 摘要1.引言2.更好(Better)3.更快(Faster)4.更健壮(Stronger)使用 WordTree 组合数据集联合分类和检测评估 YOLO9000 5.结论 Author: Joseph Redmon; Ali Farhadi Published in: 2017 IEEE Conference …...
The First Indoor Pathloss Radio Map Prediction Challenge
原文:免费下载 挑战:ICASSP 2025 Chanllenge 摘要:为了鼓励进一步的研究并促进在开发基于深度学习的无线电传播模型时进行公平比较,在室内传播环境中定向无线电信号发射的探索较少的情况下,我们发起了 ICASSP 2025 年首次室内路径损耗无线电地图预测挑战赛。本概述论文介…...
Android系统深度定制:内置Google TTS语音引擎并设为默认的终极指南
一、背景与挑战 在Android 12.0的GMS套件定制化开发中,我们发现原生的文本转语音(TTS)功能存在一个关键问题:Google TTS语音包并非预装组件,导致用户需要手动下载安装后才能使用。本文将通过深度系统定制,…...
dify0.15.3升级至dify1.1.2操作步骤
参考官方文档:https://github.com/langgenius/dify/releases/tag/1.0.0 准备工作 停止docker容器后,首先是备份好现有的 docker-compose.yaml其次,解压 dify-1.1.2.zip,默认解压至 dify-1.1.2,sudo cp -r dify-1.1.2…...
Vue+SpringBoot:整合JasperReport作PDF报表,并解决中文不显示问题
文章目录 一、前言二、后端代码1、pom依赖2、Jaspersoft Studio生成的jasper文件3、main程序测试案例4、解决中文不显示问题5、web接口案例 三、Vue前端代码四、演示效果 一、前言 以前,在流行jdk1.6的时候,作pdf报表,用的软件是iReport。 …...
_DISPATCHER_HEADER结构中的WaitListHead和_KWAIT_BLOCK的关系
第一部分: // // Wait block // // begin_ntddk begin_wdm begin_nthal begin_ntifs begin_ntosp typedef struct _KWAIT_BLOCK { LIST_ENTRY WaitListEntry; struct _KTHREAD *RESTRICTED_POINTER Thread; PVOID Object; struct _KWAIT_BLOCK *R…...
游戏引擎学习第180天
我们将在某个时候替换C标准库函数 今天我们要进行的工作是替换C标准库函数,这是因为目前我们仍然在使用C语言开发,并且在某些情况下会调用C标准库函数,例如一些数学函数和字符串格式化函数,尤其是在调试系统中,我们使…...
在Spring Boot中,可以通过实现一些特定的接口来拓展Starter
在Spring Boot中,开发者可以通过实现一些特定的接口来拓展Starter。这些接口允许开发者自定义Spring Boot应用程序的配置和行为,从而创建功能丰富且易于使用的Starter。以下是一些关键的接口,用于拓展Starter: EnvironmentPostPro…...
C# 属性(Property)详解
在 C# 中,属性(Property) 是类或结构体中的成员,用于封装对私有字段(称为 backing field)的访问,提供更灵活和安全的数据操作方式。属性通过 get 和 set 访问器控制对数据的读写&#x…...
专业级 AI 提示生成工具清单
1. 引言 近年来,随着 GPT-3、GPT-4 等大规模预训练语言模型的广泛应用,提示(Prompt)工程作为驱动模型输出质量的重要环节,受到了各界的高度关注。精心设计、管理与优化提示,不仅能够大幅提高生成文本的准确…...
Gone v2 配置管理4:连接Apollo配置中心
🚀 发现 gone-io/gone:一个优雅的 Go 依赖注入框架!💻 它让您的代码更简洁、更易测试。🔍 框架轻量却功能强大,完美平衡了灵活性与易用性。⭐ 如果您喜欢这个项目,请给我们点个星!&a…...
