目录:
1. 函数指针变量的创建
2. 函数指针变量的使用
3.函数指针数组
1.函数指针变量的创建
什么是函数指针变量呢?
根据前面学习整型指针,数组指针的时候,我们的类比关系,我们不难得出结论: 函数指针变量应该是用来存放函数地址的,未来通过地址能够调用函数的。
那么函数是否有地址呢? 我们做个测试:
确实打印出来了地址,所以函数是有地址的,函数名就是函数的地址,当然也可以通过 &函数名 的⽅ 式获得函数的地址。
【在数组指针中,&数组名 是数组的地址。数组名是数组首元素的地址,两个地址的值是一样的。
在函数指针中,&函数名和函数名 都是函数的地址,没有区别!】
如果我们要将函数的地址存放起来,就得创建函数指针变量咯,函数指针变量的写法其实和数组指针非常类似。如下:
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. 函数指针变量的使用
通过函数指针调⽤指针指向的函数。
3.函数指针数组
数组是⼀个存放相同类型数据的存储空间,我们已经学习了指针数组, 比如:
int *arr[10];
//数组的每个元素是int*
那要把函数的地址存到⼀个数组中,那这个数组就叫 函数指针数组
那函数指针的数组如何定义呢? ??
以下为Add函数 实现两数相加:
而我们如果想要同时满足两数的 加 减 乘 除 :
paff 先和 [ ] 结合,说明 paff是数组,数组的内容是什么呢? 是 int (*)() 类型的函数指针。