社区
工具平台和程序库
帖子详情
拜读候Sir的STL源码剖析的疑问,关于函数指针。。。
zxy819
2003-06-24 08:48:15
static void (* set_malloc_handler(void (*f)()))()
{
void (* old)() = __malloc_alloc_oom_handler;
__malloc_alloc_oom_handler = f;
return(old);
}
static void (* set_malloc_handler(void (*f)()))()到底是怎么回事。。。
...全文
273
10
打赏
收藏
拜读候Sir的STL源码剖析的疑问,关于函数指针。。。
static void (* set_malloc_handler(void (*f)()))() { void (* old)() = __malloc_alloc_oom_handler; __malloc_alloc_oom_handler = f; return(old); } static void (* set_malloc_handler(void (*f)()))()到底是怎么回事。。。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
softworm163
2003-06-26
打赏
举报
回复
候捷的那本东西,如果你没看过effective c++和more effective c++你未必全部看得懂
---------------------以我之见
softworm163
2003-06-26
打赏
举报
回复
它用那么多个括号是因为运算符的优先级。
static void (* set_malloc_handler(void (*f)()))()
它的参数是void
用(void (*f())来初始化这个函数指针
f()也是一个函数指针
那是一个malloc_handler的指针
而这整个函数是用作分配内存时空间不够的malloc_handler
即内存不够时就调用这个函数,
可能随后还会抛出一个异常
这跟new_handler差不多
具体可以参照more effective c++(还是effective c++ 2nd记得不太清)
说new运算符那一章
wlfjck
2003-06-26
打赏
举报
回复
也可以那么写
typedef void (*fp) ();
fp set_malloc_hardler(fp x);
zf0579
2003-06-26
打赏
举报
回复
这不就是个函数指针的用法吗?
magic007
2003-06-25
打赏
举报
回复
void (* set_malloc_handler(void (*f)()))()
这样来看:把 void (*f)()写成X
则有
void (*set_malloc_handler(X))()
如果把set_malloc_handler(X)写成Y
则有
void(*Y)()
呵呵,这就是一个函数指定的定义了。也就是说
函数set_malloc_handler返回指是一个函数指针,函数指针所指函数返回类型为void,参数为空
而相应的X为void (*)()也是一个函数指针,所指函数返回类型为void,参数为空,
也就是说
函数set_malloc_handler的参数也是一个函数指针,返回的也是一个函数指针,且二个函数指针所指函数原型一样。
fangrk
2003-06-25
打赏
举报
回复
一层一层脱
set_malloc_handler(void(*f)())是一个函数指针,指向一个返回类型和入口参数都为空的函数。
所以推导出
set_malloc_handler是一个函数:返回类型为上述指针,入口参数也是一个函数指针,指向一个返回类型和入口参数都为空的函数。
#include <iostream>
using namespace std;
void Entry()
{
cout<<"Entry"<<endl;
}
void Ret()
{
cout<<"Ret"<<endl;
}
void (* set_malloc_handler(void (*f)()))()
{
(*f)();
return &Ret;
}
int main()
{
(*set_malloc_handler(&Entry))();
}
liao2001
2003-06-25
打赏
举报
回复
这是信号/中断 常用的
晨星
2003-06-25
打赏
举报
回复
给楼主一个小程序玩玩,:)
#include <iostream>
using namespace std;
void f(void)
{
cout << "Hello f!" << endl;
}
void (*g(void(*pf)(void)))()
{
cout << "Hello g!" << endl;
pf();
return pf;
}
int main()
{
g(f)();
return 0;
}
小笨和漂向北方
2003-06-24
打赏
举报
回复
函数的返回值是一个函数指针,这个函数返回VOID,并且以一个返回值为VOID的函数指针为参数
好像是这个:)
bluedodo
2003-06-24
打赏
举报
回复
up
一堆人对一个面试的废话
这是一些很基础的问题,在现在流行的工具以及语言中都对他们做了封装,象在java的API,以及C++
STL
中,这样做可以提高我们的开发效率,但你连基本的概念都不知道怎么去提高开发效率,在数据的顺序比查找数据更重要的...
高斯烟羽扩散模型Plume
源码
解析及其在环境监测中的应用 实战版
内容概要:本文详细解析了一个名为Plume的高斯烟羽扩散模型的Python实现。首先介绍了核心的浓度计算函数,展示了如何将理论公式转化为代码,并解释了防止数值不稳定性的技巧。接着讨论了稳定度分类的实现方法,以及如何根据风速和太阳辐射量来确定大气稳定度等级。然后探讨了用于可视化的网格生成技术和性能优化措施,特别是通过缓存机制提高计算效率的方法。最后给出了一个完整的示例,演示了如何使用该模型生成污染物浓度分布图。 适合人群:从事环境保护、气象预报等相关领域的研究人员和技术人员,尤其是那些希望深入了解大气污染扩散建模的人。 使用场景及目标:适用于需要评估空气污染扩散情况的研究项目或实际应用场景,如工业排放监控、城市空气质量预测等。目的是帮助用户掌握高斯烟羽扩散模型的基本原理及其具体实现方式。 阅读建议:由于涉及到较多数学公式和物理概念,在阅读过程中可以结合相关背景知识进行深入理解;同时关注代码中的优化细节,这对于提高程序运行效率非常重要。
langchain4j-open-ai-0.24.0.jar中文文档.zip
1、压缩文件中包含: 中文文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
基于西门子S7-200 PLC的锅炉控制系统设计与实现:PID控制与单机组态详解
内容概要:本文介绍了基于西门子S7-200 PLC的锅炉控制系统设计与实现,涵盖了电路图、IO表、PID控制原理及其应用、源程序设计以及单机组态设计等方面的内容。首先,文章阐述了锅炉控制系统的重要性及其采用PLC的原因,接着详细解释了电路图和IO表的作用,确保信号的准确传递。然后深入探讨了PID控制原理,通过温度误差调整加热装置的功率,实现精确控温。随后展示了源程序设计,强调结构化编程思想的应用,提高程序的可读性和维护性。最后介绍了单机组态设计,提供直观便捷的操作界面,支持实时监控和报警功能。通过这次设计与实践,成功实现了锅炉温度的精确控制,提升了锅炉的运行效率和安全性。 适合人群:从事工业自动化领域的工程师和技术人员,特别是对PLC和PID控制感兴趣的读者。 使用场景及目标:适用于需要设计和实施锅炉控制系统的工程项目,旨在帮助工程师掌握PLC和PID控制的实际应用技巧,提升锅炉控制系统的性能和可靠性。 其他说明:文中提供的设计说明仅用于学习和参考,不作其他商业用途。
信号与系统实验:基于MATLAB的连续与离散时间信号分析及其实验结果探讨 2025版
利用MATLAB进行信号与系统实验的具体步骤和技术要点。主要内容涵盖常见信号的MATLAB表示、连续时间信号的卷积积分、连续信号的频域分析以及离散时间信号与系统的Z变换分析。文中不仅提供了具体的MATLAB代码示例,还分享了一些实用技巧,如如何正确设置时间步长、如何避免常见的数值计算误差等。此外,作者通过生动形象的语言解释了复杂的理论概念,使读者更容易理解和掌握。 适合人群:正在学习信号与系统课程的学生,尤其是需要完成相关实验作业的本科生和研究生。 使用场景及目标:帮助学生更好地理解信号与系统的基本概念和原理,掌握MATLAB在信号处理方面的应用技能,提高实验报告的质量。具体目标包括学会生成并分析不同类型的信号、理解卷积积分的意义及其在MATLAB中的实现方式、掌握频域分析的方法以及熟悉Z变换的应用。 其他说明:文中提到的所有实验图都应在Visio中重绘以确保高质量的实验报告。同时,作者强调了符号运算和数值计算的区别,并指出在实际工作中应更加关注后者。
工具平台和程序库
24,860
社区成员
27,331
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章