网站大量收购闲置独家精品文档,联系QQ:2885784924

卓越的教练是如何训练高手的.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
卓越的教练是如何训练高手的

卓越的教练是如何训练高手的? (2009-08-06 12:44:53) 转载 ??? 编者按: ??? 周立功公司之所以在一定程度上取得了一些成功,绝对不是运气所为,除了不断努力选拔优秀人才之外,且不惜代价投入人力和资本培训员工,更重要的是有效的方法,从而保证了初学者的投入与产出的最佳效果,让具备一定潜质的应届大学生脱颖而出。 ????优秀与平庸全在一念之间,关键在于你的首次择业而非就业,良好的习惯与平和的心态跟人们的第一份工作和第一位导师有很大的关系。当下的利益固然重要,但从某种程度上来看,机会、环境、远景比眼前利益更重要,因为机会、环境和远景等因素会最大限度地将你锻造成为一个在未来有绝对竞争力的人才。同样是赚钱,你是否参与了公司由默默无闻迈向卓越的过程?你是否收获了更多的快乐?你是否找到了前所未有的成就感?而很多人仅仅赚到了一些钱,幸福而不快乐。 ??? 你将希望成为哪一类人,何去何从?最初的选择尤其重要。 ??? ? ??? 这几年在全国巡回招聘应届毕业生的过程中,经常会遇到这样的现象:有些同学对自己的笔试比较满意,可是最后却得不到面试的机会,心里大为不解,颇有“死不瞑目”的味道。那么问题到底出现在哪里呢?让我们来看一个例子,这是我们招聘过程中一道常见的题目。 ?? 写一个函数,完成内存移动,并为其写一个简单的测试用例来进行测试。 ???够简单的吧?有的同学很快就写出了答案,详见程序清单1与程序清单2。 ???????? 程序清单 1?? V0.1版程序 void MyMemMove(char *dst,char *src,int count) { ????while(count--) ????{ ??????? *dst++ = *src++; ????} } ? 程序清单 2?? 测试用例 void Test() { ????char p1[256] = ”hello,world!”; ????char p2[256] = {0}; ????MyMemMove(p2,p1,strlen(p1)); ????printf(“%s”,p2); } ??? 客观地讲,相比那些交白卷或者函数声明都不会写的同学来说,能够写出这段代码的同学已经非常不错了,至少在C语言这门课程上已经达到了现行高校的教育目标,但是离企业的用人要求还有一定的距离。我们不妨将上面的程序称为V0.1版本,看看还有没有什么地方可以改进。 ??? 首先我们看看函数声明是否合理,V0.1版的程序将源地址和目的地址都用char *来表示,这样当然也没有什么问题,但是让其他人使用起来却很不方便,假如现在要将count个连续的结构体对象移动到另外一个地方去,如果要使用v0.1的程序的话,正确的写法如下: ???? MyMemMove((char *)dst,(char *)src,sizeof(TheStruct)*count) ??? 也就是说我们需要将结构体指针强制转换成char * 才能够正常工作,这样除了字符串以外其它的类型都不可避免地要进行指针强制转换,否则编译器就会呱呱叫,比如在VC++2008下就会出现这样的错误: ??? error C2664: MyMemMove : cannot convert parameter 1 from TheStruct * to char * ??? 那么如何解决这个问题呢?其实很简单,我们知道有一种特别的指针,任何类型的指针都可以对它赋值,那就是void *,所以应该将源地址和目的地址都用void*来表示。当然函数体的内容也要作相应的改变,这样我们就得到了V0.2版的程序。 ? 程序清单 3?? V0.2版程序 void MyMemMove(void *dst,void *src,int count) { ?????while (count--) ?????{ ????????*(char *)dst = *(char *)src; ????????dst = (char *)dst + 1; ????????src = (char *)src + 1; ????? } } ????有的同学可能会问,这里面不是还有指针强制转换吗?只不过是换了地方。没错,强制指针转换确实是从使用者的代码转移到了库的代码里,但我们可以将MyMemMove理解为库,而将Test理解为使用者,事实上通过调整之后的效果却有天壤之别,V0.1是一逸永劳,而V0.2是一劳永逸! ????还有几个细节需要注意,为了实现链式表达式,我们应该将返回值也改为void *。此外,如果我们不小心将“*(char *)dst = *(char *)src;”写反了,写成“*(char *)src = *(char *)dst;”编译照样通过,而为

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档