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

公司网站怎么做能被别人搜索到会计培训班的费用是多少

公司网站怎么做能被别人搜索到,会计培训班的费用是多少,哪里有免费建设网站,中山 网站建设一条龙全包对回调(callback)函数的一点粗陋理解,在我小时候,隔壁村有家月饼小作坊(只在中秋那段时间手工制作一些月饼出售,后来好像不做了),做出的月饼是那种很传统很经典的款式,里…

        对回调(callback)函数的一点粗陋理解,在我小时候,隔壁村有家月饼小作坊(只在中秋那段时间手工制作一些月饼出售,后来好像不做了),做出的月饼是那种很传统很经典的款式,里面有红绿丝、冰糖以及芝麻(好像也只做这一种),曾经跟着大人进去过一次,里面有张木头制作的月饼模子,原来花瓣状的月饼是用它压出来的啊,我们的回调函数(指针)就是这张月饼模子。功能是制作月饼(函数返回值),配料(参数)是面粉和油以及馅料。假如这个作坊一共有3个工人,每个工人负责一种馅料(五仁、豆沙、蛋黄)月饼,他们都需要这张月饼模子来制作自己的月饼,换句话说,他们都要提供同样类型的参数(配料)并得到同样类型的结果(月饼),至于具体的里子和做法(函数实现)必须得他们个人定,在实际生产(程序流程)中,这仨工人按各自节奏准备好自己的物料(函数实现),当在需要制作月饼时(调用回调函数),将配料往模子里这么一压,哟嘿,糯和和的月饼制作出来了。

        这一天当中,不同的师傅拿这个模子(回调函数指针)按自己的方法(函数具体实现)塞入配料(参数)压出了不同口味的月饼,不知道有没有越描越糊涂的嫌疑。

        下面再简单说说两个比较常见的用法。

例子一

一般使用(理解概念)
#include<stdio.h>int Callback_1(char *m) // Callback Function 1
{printf("Hello, this is Callback_1 %s\n", m);return 0;
}int Callback_2(char *n) // Callback Function 2
{printf("Hello, this is Callback_2 %s\n", n);return 0;
}int Callback_3(char *t) // Callback Function 3
{printf("Hello, this is Callback_3 %s\n", t);return 0;
}int Handle(int (*Callback)(char *), char *val)
{printf("Entering Handle Function. \n");Callback(val);printf("Leaving Handle Function. \n");
}int main()
{printf("Entering Main Function. \n");Handle(Callback_1, "wuren");Handle(Callback_2, "dousha");Handle(Callback_3, "danhuang");printf("Leaving Main Function. \n");return 0;
}

        上面的代码中,月饼模子就是int (*Callback)(char *),返回值是int(月饼),参数是char *(配料),三个师傅各自的秘密配方及手法分别是int Callback_1(char *m)、int Callback_2(char *n)、int Callback_3(char *t),这个int Handle(int (*Callback)(char *), char *)函数就是标准的工艺流程。在制作时(主函数内部调用),我们让师傅们轮流来操作,一号师傅拿起"wuren"配料制作出了五仁月饼,二号师傅拿起“dousha”配料制作出了豆沙月饼,三号师傅拿起"danhuang"配料制作出了蛋黄月饼。返回情况如下。

例子二

结构体使用(使用拓展)
#include <stdio.h>typedef struct
{int w;int h;int (*callback)(void*, void*);    
}St_Rect;int area(int w, int h)
{if(w && h){return w*h;}else{printf("area:invalid para!\n");return -1;}}int perimeter(int w, int h)
{if(w && h){return 2*(w + h);}else{printf("perimeter:invalid para!\n");return -1;}
}int empty(int w, int h)
{printf("w=%d,h=%d\n", w, h);return 0;
}void main(void)
{St_Rect rect;int choose = -1;printf("please input w\n");scanf("%d", &rect.w);printf("please input h\n");scanf("%d", &rect.h);printf("please input choose result\n");scanf("%d", &choose);switch(choose){case 0:rect.callback = area;break;case 1:rect.callback = perimeter;break;default:rect.callback = empty;break;}int result = rect.callback((int *)rect.w, (int *)rect.h);printf("the result is %d\n", result);
}

        这段代码则是回调函数的另外一种用法,很多实际项目上应该都比较常见。比如一家研发金融产品的公司,他们的客户有人行、建行、农行等等国内外银行以及其他机构,其中这家公司的一款清分机市场销量挺nice,吸引了更多的客户来购买,但是不同的客户有不同的需求(清分数据的处理逻辑),之前只有几家客户的情况下还可以通过类似if else、switch case这样的方法来实现不同客户的需求,随着客户数量的增加,再这么干不是不可以,但你能忍受代码里有这么多的条件语句吗,而且代码整体看起来码商也不高。此时我们就可以考虑用回调(第一种使用方法的升级用法),共用同一套架构,初始化时给予不同的函数实现。上面的代码例子也是基于此种场景,我们来看看。

        我们定义了一个矩形结构体,成员变量有宽度w、高h以及一个我们的回调函数指针int (*callback)(void*, void*),这个函数指针等同于保存一个(函数)地址的变量,而且这个回调函数有两个无类型的参数void*,无类型方便我们后面拓展使用。主函数内,我们让使用者分别输入宽度和高度值,并在最后让使用者选择是生成矩形面积结果呢还是矩形周长结果。其中的switch语句相当于初始化过程,确定最终的客户方案,最后开始了我们的回调过程,并返回我们选择的方案结果。

        大家在日常工作学习中如有类似需求可以参考一二,如果还有其他用法,欢迎告知讨论!

http://www.dt0577.cn/news/6438.html

相关文章:

  • 网站建设 业务员提成网络营销品牌推广
  • 南山网站建设公网页制作软件哪个好
  • 怎么用hbuilder做网站怎么提高关键词搜索排名
  • 开原铁岭网站建设如何seo搜索引擎优化
  • 网站源码下载pdf文件网络服务器搭建
  • 昆山网站建设义搏营销工具有哪些
  • 建设网站banner在线资源搜索神器
  • 广州3d网站开发网络优化工程师前景
  • 扁平化网站配色无锡百度信息流
  • 网站建设费计什么科目青岛网站建设与设计制作
  • 中外政府网站建设功能比较品牌宣传如何做
  • 数据库怎么建立wordpress惠州市seo广告优化营销工具
  • 做淘宝网站目的网站优化推广方法
  • 政府门户网站建设情况汇报材料长沙关键词优化方法
  • 微网站建设难不难免费的网站申请
  • 安国市住房和城乡建设局网站百度网盘云资源搜索引擎
  • iis怎么做IP网站竞价推广账户托管费用
  • 沈阳市住房和城乡建设局网站首页nba赛季排名
  • joomla 政府网站百度竞价怎么操作
  • 什么网站免费做简历模板长沙网站设计拓谋网络
  • 献县制作网站桂林网站设计制作
  • 网站怎么加代码大数据营销 全网推广
  • 做薪酬调查的网站作品提示优化要删吗
  • 网页设计的基本结构神马搜索seo优化排名
  • 什么网站服务器好聊城seo整站优化报价
  • 建站宝盒可以做视频聊天交友网站吗免费网站统计
  • 邹城网站建设排名公式
  • 深圳民治网站建设百度搜索指数入口
  • 简单网站建设论文总结拓客平台有哪些
  • 苏州品牌网站建设哪个软件可以自动排名