12 | C语言中的函数类型和函数指针类型
函数类型和函数指针类型的区别,让我们先看一个例子
#include <iostream>
using namespace std;
typedef int(Func)(int);
typedef int(*Func_p)(int) ;
int f(int a){return a;}
int main(){
Func_p p=f;
Func* p_ptr=f;
cout<<p(0)<<endl;
cout<<p_ptr(1)<<endl;
}
这段代码的运行结果
0
1
相信大家看到这里应该明白怎么回事了。
函数类型*
≈函数指针类型
这也就可以解释 map
的模板参数需要传进去一个 函数指针类型
,而不是函数类型
了
bool MyCompare(const Person &p1, const Person &p2) {//普通的函数
return (p1.age < p2.age) || (p1.age == p2.age && p1.name.length() < p2.name.length());
}
map<Person,int,decltype(&MyCompare)> group(MyCompare);
在补充一点就是 指针函数
是什么,指针函数
是 返回指针的函数
。下面举几个例子
//1
int* func(int,int);
//2
typedef int(*Func_p)(int) ;
Func_p func(int,int);