mmxingye

导航

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);

posted on 2023-04-26 11:51  独立树  阅读(33)  评论(0编辑  收藏  举报