01
什么是函数指针
1、如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配了一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。
2、可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该函数。
3、例子
int (*p)(int,int);
定义p是一个指向函数的指针变量,它可以指向函数的类型为整型且有两个整型参数的函数。p的类型用int(*)(int,int)表示。
02
用函数指针变量调用函数
如果想调用一个函数,除了可以通过函数名调用以外,还可以通过指向函数的指针变量来调用该函数。
03
怎么定义和使用指向函数的指针变量
1、一般形式
类型名(*指针变量名)(函数参数表列);如“int(*p)(int,int);”,这里的“类型名”是指函数返回值的类型。
2、定义指向函数的指针变量,并不意味着这个指针变量可以指向任何函数,它只能指向在定义时指定的类型的函数。
3、如果要用指针调用函数,必须先使指针变量指向该函数。
4、在给函数指针变量赋值时,只须给出函数名而不必给出参数。
5、用函数指针变量调用函数时,只须将(*p)代替函数名即可(p为指针变量名),在(*p)之后的括号中根据需要写上实参。
6、对指向函数的指针变量不能进行算术运算,如p+n,p++,p--等运算是无意义的。
7、用函数名调用函数,只能调用所指定的一个函数,而通过指针变量调用函数比较灵活,可以根据不同情况先后调用不同的函数。
04
用指向函数的指针作函数参数
1、指向函数的指针变量的一个重要用途是把函数的地址作为参数传递到其他函数。
2、指向函数的指针可以作为函数参数,把函数的入口地址传递给形参,这样能够在被调用的函数中使用实参函数。
有时候,正是那些意想不到之人,成就了无人能成之事。
——图灵
文字/闫小林
图片/源于网络
- END -