随笔 - 576  文章 - 0  评论 - 62  阅读 - 219万

指针函数与函数指针

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的地址。

对于函数来说,函数名就表示函数的地址。

posted on   Andy Niu  阅读(523)  评论(0编辑  收藏  举报
编辑推荐:
· 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编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示