详解 指针函数,函数指针,函数指针函数

在一些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如果你理解了,你可以继续翻阅你的源码了!

相关推荐
YuanLiu_2272 分钟前
代码随想录算法训练营第十三天(递归遍历;迭代遍历;统一迭代;层序遍历)
java·数据结构·笔记·算法·leetcode
闻缺陷则喜何志丹5 分钟前
【C++动态规划】1411. 给 N x 3 网格图涂色的方案数|1844
c++·算法·动态规划·力扣·网格·数目·涂色
achaoyang5 分钟前
【Python中while循环】
开发语言·python
呆呆小雅8 分钟前
C# 封装
java·开发语言·c#
蒜蓉大猩猩15 分钟前
Vue.js - 组件化编程
开发语言·前端·javascript·vue.js·前端框架·ecmascript
仙俊红20 分钟前
快速运行openMMOCR
深度学习·算法
南鸳61027 分钟前
Scala:根据身份证号码,输出这个人的籍贯
开发语言·后端·scala
-Max-静-36 分钟前
Paddle Inference部署推理(十八)
人工智能·windows·深度学习·算法·paddle·推理 部署
eclipsercp39 分钟前
PyQt5:Python GUI开发的超级英雄
开发语言·python·qt
熬夜学编程的小王41 分钟前
【C++篇】解锁C++模板的魔法:从万能钥匙到精准雕刻
c++·进阶模版·c++模版·类模版实例化·函数模版实例化