c语言笔记 函数指针
函数指针
定义:指向函数的指针,被称为函数指针;
概念:函数指针是指针的一种类型,跟其他普通函数指针的用法是原因的,但是由特殊的地方就是函数指针的取址符和解引用的星号可以省略
使用代码加深理解:
在定义指针的时候,我们要匹配指针的类型,在之前的笔记中有提到变量的类型 就是把变量名字去掉,剩下的就是该变量的类型,函数也是如此;
#include<stdio.h>
//比较大小值的函数
int max(int a, int b)
{
return a>b?a:b;
}//函数就是一块内存空间,max函数向系统申请一块空间来使用
int main()
{ //定义一个函数指针指向max,
int (*p)(int a ,int b) = &max;
int n = max(3,5);
int nn = (*p)(3,5);
上面两种写法是等价的.
//函数指针还有特殊的规则
int (*p)(int a ,int b) = max;//&可以省去,两种是等价的
int n = max(3,5);
int nn = (p)(3,5); //*可以省去
return 0;
}
为什么函数指针的&和*可以省去?
因为在系统中对于函数指针中加上的&和*,编译器会自动忽略不看。之所以存在是为了,方便我们初学者学习指针,指针的用法是一样的,可以取地址,可以解引用。让我们脑海里有一个统一的用法,我们可以坚持原先的使用规则,但是若是出现函数指针不出现&和*,我们就知道是函数指针的特殊规则。
函数实际上也是函数指针。