当前位置: 首页 > news >正文

dw做的个人网站做细胞激活的母液网站

dw做的个人网站,做细胞激活的母液网站,皇岗网站建设,怎样在安装wordpress01、函数指针1.1、函数指针定义一个函数总是占用一段连续的内存区域#xff0c;函数名在表达式中有时也会被转换为该函数所在内存区域的首地址#xff0c;这和数组名非常类似。我们可以把函数的这个首地址#xff08;或称入口地址#xff09;赋予一个指针变量#xff0c;使… 01、函数指针1.1、函数指针定义一个函数总是占用一段连续的内存区域函数名在表达式中有时也会被转换为该函数所在内存区域的首地址这和数组名非常类似。我们可以把函数的这个首地址或称入口地址赋予一个指针变量使指针变量指向函数所在的内存区域然后通过指针变量就可以找到并调用该函数。这种指针就是函数指针。简言之函数指针其实就是一个指针变量代表着一段内存。1.2、函数指针的定义形式returnType (*pointerName)(param list);returnType 为函数返回值类型pointerName 为指针名称param list 为函数参数列表。参数列表中可以同时给出参数的类型和名称也可以只给出参数的类型省略参数的名称这一点和函数原型非常类似。返回类型(*函数名)(参数表)例如下面两种写法都是正确的。「写法一」void (*F_TYPE)(int nParam,char strName); //带参数变量名「写法二」void (*F_TYPE)(int,char); //不带参数变量名注意事项注意( )的优先级高于*第一个括号不能省略如果写作returnType pointerName(param list);就成了函数原型它表明函数的返回值类型为returnType*1.3、函数指针与typedef想必大家都能看出来函数指针的定义是很长一段的如果每次是用都要写这么长一段额大可不必因为typedef能够解决这个问题。typedef程序中的作用一般是取别名例如下面这个例子我们把函数指针换个名字。typedef 返回类型(*新类型)(参数表)//1.默认原始写法 void callbackint(int a, int b, int (*pMsg)(int a,int b));  //2.typedef优化后 typedef void (*PSM)(int a, int b); void callbackint(int a, int b, PSM p);这样做的好处是以后只要需要使用int (*pMsg)(int a, int b)的地方我们都能使用PSM p这种方式来替换他。typedef是C语言基础这里不浪费时间在关键字上面感兴趣的可以自行了解一下。02、回调函数2.1、回调函数定义百度给的解释是:回调函数就是一个被作为参数传递的函数。在C语言中回调函数只能使用函数指针实现在C 、Python、ECMAscript等更现代的编程语言中还可以使用仿函数或匿名函数。回调函数的使用可以大大提升编程的效率这使得它在现代编程中被非常多地使用。同时有一些需求必须要使用回调函数来实现。最著名的回调函数调用有C/C 标准库stdlib.h/cstdlib中的快速排序函数qsort和二分查找函数bsearch中都会要求的一个与strcmp类似的参数用于设置数据的比较方法。关于名词仿函数请参考STL源码剖析中的算法一块儿会有非常细致的解释。我自己的理解就是通过参数将函数地址传入在多线程中如果主线程在执行此函数时通过参数中的函数地址相当于异步执行了另外一个函数另外一个函数也就是我们所称的回调函数回调函数多用于socket、http等协议中的消息交互处理回调函数的本质就是C/C 中的函数指针如上所述。2.2、回调函数的使用场景著名的 lone wolf 曾经解释过这个问题其实回调就是一种利用函数指针进行函数调用的过程. 为什么要用回调呢?比如我要写一个子模块给你用, 来接收远程socket发来的命令.当我接收到命令后, 需要调用你的主模块的函数, 来进行相应的处理.但是我不知道你要用哪个函数来处理这个命令, 我也不知道你的主模块是什么.cpp或者.h, 或者说, 我根本不用关心你在主模块里怎么处理它, 也不应该关心用什么函数处理它…… 怎么办? 使用回调!什么是回调函数?回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调函数的地址指针告诉DLL而DLL在适当的时候会调用该函数。回调函数必须遵守事先规定好的参数格式和传递方式否则DLL一调用它就会引起程序或系统的崩溃。通常情况下回调函数采用标准WindowsAPI的调用方式即__stdcall当然DLL编制者可以自己定义调用方式但客户程序也必须遵守相同的规定。在__stdcall方式下函数的参数按从右到左的顺序压入堆栈除了明确指明是指针或引用外参数都按值传递函数返回之前自己负责把参数从堆栈中弹出。理解回调函数!在很多第三方库中比如libcurl中CURL_EXTERN curl_easy_setopt(CURL* curl,CURLoption option, ...);就是用了回调函数通过设置一个函数地址当我们将内容发送到http请求页面之后页面会通过字节流返回一个stringstream类型数据里面就是我们请求服务器之后的返回结果在一些频繁请求中你不可能做到每一个都要程序停下来处理这个时候就可以使用回调函数来处理异步通讯。多线程中主线程收发数据、子线程处理响应数据。大致都是一个意思。03、实例重释我这里分文件举一个简单的例子阐述刚才上面说到的内容。可能内容不够精炼大佬请随意初学者建议看一下很好理解。功能创建一个函数传递两个int类型参数通过回调函数返回其两个int类型参数的计算结果。CallBack.h内容如下#ifndef _CALLBACK_H #define _CALLBACK_H//使用typedef进行简化代码按部就班的写肯定没问题 typedef int (*PMSGMessage)(int a, int b);//回调函数 int callbackInt(int a, int b, PMSGMessage p); #endifCallBack.cpp内容如下#include  #include CallBack.husing namespace std;int callbackInt(int a ,int b, PMSGMessage p) {//回调函数实现retrun p(a,b) }test.cpp函数内容如下#include  #include CallBack.h using namespace std;int Multiplication(int a, int b) {//参数检查(避免出现0)if( a  0 || b  0){cout  其中有参数为0结果应避免为0  endl;return 0;}return a * b; }int main() {int n  6;int m  11;int bRet  callbackInt(n,m,add);//如果我们用了类就是函数等都是成员函数我们这里要带上域操作符 :: cout  回调函数执行的结果是  bRet  endl; system(pause);return 0; }小结回调函数的简单应用大概就是这么多如果有机会建议多用点开源库那里面很多地方都是用了回调函数机制而且都是比此例子高级一点的用法但是基本思想都一样不要因为用法高级一点就害怕了自己写两个例子之后想必对于回调会有更深的理解。来源https://blog.csdn.net/m0_43458204/article/details/116715045
http://www.pierceye.com/news/612515/

相关文章:

  • 东莞哪家网站建设比较好wordpress更改语言设置
  • 如何找做网站的客户wordpress适合视频网站吗
  • 网站建设的业务流程图拔萝卜视频播放在线观看免费
  • 建个网站要多少钱高安网站制作
  • dw设计模板百度ocpc如何优化
  • 苏宁网站优化与推广html教程网站
  • 怎么做网站网页免费高清屏幕录像
  • 网络推广哪个网站好亚马逊网站开发使用的什么方式
  • 佛山企业网站建设咨询怎么从零开始做网站
  • dede移动端网站源码中国能建设计公司网站
  • 潍坊网站建设多少钱做网站seo优化
  • 南昌网站建设方案外包怎么自己做网站凑钱
  • 贵州企业展示型网站建设网站建设需要摊销吗
  • 网站建设视频教程广州哪里有正规的技能培训
  • 网站后台iis配置小程序模板消息推送规则
  • 桥梁建设工程网站残疾人网站服务平台
  • 网站开发语言包括哪些潍坊公司注册
  • 平顶山网站制作哪家公司好阿里巴巴网站建设改图片
  • 网站设计培训学校有哪些wordpress主题什么值得买
  • 如皋建设工程局网站静态网站做淘宝客
  • 温州网站建设案例做网站卖衣服物流包年多少钱
  • 响应 网站建设招聘室内设计
  • 网站建设宣传册内容南京个人网站建设
  • 毕业设计可以做哪些网站遵义原创网站
  • 国外服装设计网站app网站建设需要什么
  • 网站建设a云世家宋南南网站建设合集
  • 可以网上做单的网站创建全国文明城市的宗旨是什么
  • 北京诚信建设网站成都蓉城最新消息
  • 上市公司网站建设分析评价网页制作的视频教程
  • 网站营运费网站关键字优化工具