函数和指针
前言
首先,了解两个不同的概念。
- 函数指针
这是个指针。它指向函数的地址。 - 指针函数
这是个函数。它用来返回指针。
声明函数指针
指针有它所对应的类型,比如int*,int类型的指针。所以函数指针也有其类型。
我们又知道,要将一个地址赋给一个指针,它们对应的类型要相同。
首先,函数的声明有两要素。(1)函数的返回值 (2)函数接收的参数的类型
如果有一个函数指针和一个函数,它们各自的两要素一样,这就可以让这个函数的地址赋给这个函数指针。
例如**声明函数指针时只需把
(*pf)这个指针和ToUpper这个函数名换掉
函数声明:void ToUpper(char *);
函数指针的声明:void (*pf)(char *);
**这样一来,(*pf)当作ToUpper
注意
- 这里必须要将*pf用()括起来。如果不,就成了指针函数了。
- 在以后调用函数也要()括起来
使用
首先,我们要知道函数的地址怎么表示。数组就把数组名作为它的首元素地址。函数代码就把函数名作为函数起始处的地址。
赋函数地址给指针
pf = ToUpper怎么通过函数指针调用函数
pf指针存有函数的地址,(*pf)()这个就是相当与ToUpper()。另外,还有pf()这种调用函数的方法也被认同。
一般用法
- 将函数指针作为函数的参数传递给函数。
void show(void (* fp)(char *), char * str);//接受函数指针
1 |
|
1 |
|
