C语言 | 函数指针变量&函数指针数组

本文介绍了函数指针变量的创建原理,如何通过函数指针调用对应函数,并探讨了函数指针数组的概念,以及如何结合数组操作实现多种数学运算功能。
摘要由CSDN通过智能技术生成

目录:

1. 函数指针变量的创建

2. 函数指针变量的使用

3.函数指针数组


1.函数指针变量的创建

什么是函数指针变量呢?

根据前面学习整型指针,数组指针的时候,我们的类比关系,我们不难得出结论: 函数指针变量应该是用来存放函数地址的,未来通过地址能够调用函数的。

那么函数是否有地址呢? 我们做个测试:

03f26cfd7ef048238749464636b0aacb.png

确实打印出来了地址,所以函数是有地址的,函数名就是函数的地址,当然也可以通过 &函数名 的⽅ 式获得函数的地址。

【在数组指针中,&数组名 是数组的地址。数组名是数组首元素的地址,两个地址的值是一样的。

在函数指针中,&函数名和函数名 都是函数的地址,没有区别!】

如果我们要将函数的地址存放起来,就得创建函数指针变量咯,函数指针变量的写法其实和数组指针非常类似。如下:

int arr[10]={0};
int (*pa)[10]=&arr;  //数组指针


int Add(int x, int y)
{
    return x+y;
} 
int(*pf)(int,int) = Add; //pf用来存放函数地址,pf就是函数指针变量
 |   |      |
 |   |      |
 |   |     pf函数的参数类型和个数的交代
 |  函数指针变量名
 pf指向函数的返回类型

int (*) (int x, int y) //pf函数指针变量的类型

2. 函数指针变量的使用 

通过函数指针调⽤指针指向的函数。

c3b97f4d67f84bf09e4795026bd4f1bd.png

3.函数指针数组 

数组是⼀个存放相同类型数据的存储空间,我们已经学习了指针数组, 比如:

int *arr[10];
//数组的每个元素是int*

那要把函数的地址存到⼀个数组中,那这个数组就叫 函数指针数组


那函数指针的数组如何定义呢? ??

以下为Add函数 实现两数相加:

5ddd31b4ff68428a84bb4fb16cbee9e5.png

而我们如果想要同时满足两数的 加 减 乘 除 :

38071c18f8d4490d80996b1d9039e2a3.png

paff 先和 [ ] 结合,说明 paff是数组,数组的内容是什么呢? 是 int (*)() 类型的函数指针。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值