八、善于利用指针——指向函数的指针

什么是函数的指针

如果在程序中定义了一个函数,在编译时会把函数的源代码转换为可执行代码并分配一段存储空间。这段内存空间有一个起始地址,也称为函数入口地址。每次调用函数时都因该从该地址入口开始执行此段函数代码。函数名代表函数的起始地址,并执行函数代码。
函数名就是函数的指针,它代表函数的起始地址。
可以定义一个可以指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该函数。例如: int (*p)(int,int);

用函数指针变量调用函数

调用一个函数的方法?

  1. 可以通过函数名调用以外
  2. 通过指向函数的指针变量来调用函数。

怎样定义和使用指向函数的指针变量

类型名 (*指针变量名) (函数参数表列);这里的类型名是指函数返回值的类型。
定义指向函数的指针变量,并不意味着这个指针变量可以指向任何函数,它只能指向在定义时指定的类型的函数。
在一个程序中,一个指针变量可以先后指向同类型的不同函数。
如果要用指针调用函数,必须先使指针变量指向函数。(p266)
用函数指针变量调用函数时,只须将(*p)代替函数名即可(p为指针变量名),在(*p)之后的括号中根据需要写上实参。例如,c=(*p)(a,b);
对指向函数的指针变量不能进行算术运算。
用函数名调用函数,只能调用所指定的一个函数,而通过指针变量调用函数比较灵活,可以根据不同情况先后调用不同的函数。

用指向函数的指针作函数参数

指向函数的指针变量的一个重要用途是把函数的入口地址作为参数传递到其他函数。
指向函数的指针可以作为函数参数,把函数的入口地址传递给形参,这样就能够在被调用的函数中使用实参函数。

猜你喜欢

转载自blog.csdn.net/lijiahao1212/article/details/129981863