在一些STL源码或者linux源码经常能看到这些东西,确实挺让人头疼
指针函数
返回值为指针的函数
monney* get_monney(people* p) //传people指针进去 return的是这个人的财产指针
{
return p->monney_;
}
函数指针
函数指针是一个指向函数的指针,允许通过它调用函数。
#include<iostream>
using namespace std;
void text()
{
cout<<"hello"<<endl;
}
void (*func)(); //声明了一个返回值为void参数为空的函数指针 func
int main()
{
func=text; //text初始化func
//void (*func)()=text; //可以直接声明并且初始化
func(); //打印hello
return 0;
}
指针函数指针
一个指向指针函数的指针
实质就是一个函数指针,其实没有指针函数指针这种说法
cpp
#include <iostream>
using namespace std;
int *get(int &a) {
return &a;
}
int main() {
int a = 10;
int *(*func)(int &) = get; //声明一个返回值为int*参数为int的函数指针
cout << func(a) << endl;
return 0;
}
函数指针函数
返回值为函数指针的函数
cpp
#include <iostream>
using namespace std;
void text() {
cout << "hello" << endl;
}
void (*get_func())() { //定义了一个函数get_func() 返回一个返回值为void 参数为空的函数指针
return text;
}
int main() {
void (*func)() = get_func();
func();
return 0;
}
检验一下
static void (*set_malloc_handler(void (*f)()))()
这是一个返回 返回值为void参数为空的函数指针 的set_malloc_handler函数,同时这个函数需要一个函数指针f为参数
ok如果你理解了,你可以继续翻阅你的源码了!