返回函数指针: int(*)(int, int)与int *(int, int)的区别
int(*)(int, int)类型实际上是一个函数指针(指向的函数返回int),而int *(int, int)的类型实际上是一个函数类型(该函数返回int *).同理,int (*)[10]与int *[10]的区别也与之类似(前者为数组指针,后者为存放int指针的数组).
int(*)(int, int)与int *(int, int)这二者在作为函数的返回类型时,区别明显.请看代码.
1 #include <iostream>
2 #include <typeinfo>
3 using namespace std;
4
5 using PF = int(*)(int, int);//函数指针类型
6 using PE = int *(int, int);//函数类型;PE *才是函数指针类型, PE * p 等价于int *(*p)(int, int).
7
8 int ff1(int a, int b)
9 {
10 return 1;
11 }
12
13 int i = 1;
14 int *p = &i;
15 int *ff2(int a, int b)
16 {
17 return p;
18 }
19
20 PF f1()
21 {
22 cout << "f1" << endl;
23 return ff1;
24 }
25
26 PE *f2()
27 {
28 cout << "f2" << endl;
29 return ff2;
30 }
31
32 int main()
33 {
34 cout << "PF = " << typeid(PF).name() << endl;
35 cout << "PE = " << typeid(PE).name() << endl;
36 f1();
37 f2();
38 return 0;
39 }
注意上述PE *的类型.打印结果如下:
不是尽力而为,而是全力以赴.