1. 定义
函数指针,指向函数的指针,而不是对象。函数的类型由它的返回值类型和形参共同决定,与函数名无关。
| void display(const string& s1,const string& s2);
void (*fp)(const string& s1,const string& s2);
|
函数指针的定义,只需用函数指针名替换函数名即可,注意一定要加括号,要不然就成了返回void*类型的函数了。
2. 初始化
1 2 3 4 5 6 7 8
| void display(const string& s1,const string& s2);
void (*fp)(const string& s1,const string& s2);
pf=display;
pf=&display;
|
3. 使用函数指针
1 2 3 4 5 6 7 8 9 10 11 12
| void display(const string& s1,const string& s2);
void (*fp)(const string& s1,const string& s2);
pf=display;
pf("hello","world");
(*pf)("hello","world");
display("hello","world");
|
4. 函数指针形参
函数指针可以作为形参,传递给函数。函数指针作为应用程序的一个接口。
1 2 3 4 5 6 7 8
|
void test(void fp(const string& s1,const string& s2));
void test(void (*fp)(const string& s1,const string& s2)) { fp("hello","world"); }
|
5. decltype 操作符
decltype返回函数类型。
1 2 3 4
| typedef void Func(const string& s1,const string& s2); typedef decltype(display) Func2; typedef void (*PFunc)(const string& s1,const string& s2); typedef decltype(display) *PFunc2;
|
Func和Func2是函数类型,PFunc和PFunc2是函数指针类型。
1 2
| void test(Func2 fp); void test(PFunc2 fp);
|