指针函数与函数指针
1、明确谁是主体,前面是定语,后面是主体。
指针函数:返回指针的函数
函数指针:指向函数的指针
2、函数类型
函数包括:函数名,返回类型,形参表,修饰符。
函数类型表明一类函数,这一类函数的返回类型和形参表相同,而与函数名无关。
一个函数,把函数名去掉,就是函数类型。比如:
int Fun (int a) --- 函数Fun,函数Fun的类型为 int (int a);
对于函数类型:在返回类型和形参表之间,加上一个函数名,就表示一个特定的函数。在返回类型和形参表之间,加上一个指针名,表示指向这一类函数的指针。
3、区分
int * Fun(int a ) :函数名为Fun,返回类型为 int*
int (*Fun) (int a):函数指针,指向一类函数 int (int a)
函数指针也是一种类型,去掉指针名,即int (*) (int a),表示一类指针
思考:函数既然能返回指向数据的指针,当然也可以返回指向函数的指针,原则上应该这样写:
int (*) (int a) G (int a); 实际上是这样写的:int (* G(int a) ) (int a),
阅读方法是按照优先级,由内到外。先看G (int a )是一个函数,形参表为int a,返回类型是 int (*) (int a)
为了便于理解,使用typedef,如下:
typedef int (* PF) (int a);
PF G(int a)
4、指针类型
指针类型分为指向数据的指针和指向函数的指针,二者不能相互转换。
5、函数不能返回另一个函数或者内置数组类型,但是,可以返回指向函数的指针,或者指向数组的指针。
6、按理说,函数指针必须指向函数的地址,也就是
int Fun(int a);
int (*PF) (int) = &Fun;
但这样写 int (*PF) (int) = Fun;也是可以的,因为发生了蜕变,Fun会自动转化为Fun的地址。
对于函数来说,函数名就表示函数的地址。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理