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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)