C内部培训-第一讲CodingStyl.ppt_第1页
C内部培训-第一讲CodingStyl.ppt_第2页
C内部培训-第一讲CodingStyl.ppt_第3页
C内部培训-第一讲CodingStyl.ppt_第4页
C内部培训-第一讲CodingStyl.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,1,2019/11/19,C+内部培训第一讲codingstyle,张锴2009-08-13,2,2019/11/19,说明,本次培训是以交流为目的,意在通过培训的方式使诸位对C+基础编程知识有初步的了解。此次培训所摘取的资料皆来自前人的著作,本人才疏学浅,不敢妄言自大,谨此对他们的成果进行肤浅的讲解。如果诸位能从本次培训中有所收获,那将是本人的巨大荣幸。在编写此次培训文档过程中引用了大量前人的宝贵资料、经验,有感于前辈们对学识的执着探取与大公无私的精神,借此机会对他们表示崇高的敬意。,3,2019/11/19,第一讲codingstyle,4,2019/11/19,程序结构,程序基本组成每个C+程序通常分为两个文件。一个用于程序声明(即头文件*.h);另一个用于程序的实现(即定义*.cpp)。更为正规的程序会将“用于程序实现的文件”再细化分为两个文件:一个用于实现头文件中声明的函数;另一个用于程序的主干实现(main)。,5,2019/11/19,程序结构,6,2019/11/19,程序结构,版权意识有人说:使用盗版软件就像在马路上拿枪抢劫一样。我很穷、没钱买正版,但要有感恩的心。版权声明版本信息文件名称,标识符,摘要当前版本号,作者/修改者,完成日期版本历史信息,7,2019/11/19,程序结构,头文件的结构版权声明预处理函数和类的声明【头文件中不能定义函数、变量。const常量、内联函数、函数模板除外】【如果需要在多个*.cpp中使用同一个全局变量,需要在一个*.cpp中定义,并在相关头文件中使用extern声明】,8,2019/11/19,程序结构,头文件的作用通过头文件调用库功能(dll)。在很多场合,源代码不便向用户公布,只要向用户提供头文件和二进制的库即可。用户只需按照头文件中的接口声明来调用库功能,而不必关心接口是怎么实现的。编译器会从库中提取相应的代码。头文件能加强类型安全检查。如果某个接口被实现或使用时,其实现方式与声明不符,编译器就会报错,这一简单规则能大大减轻程序员调试、改错的负担。,9,2019/11/19,程序结构,头文件补充说明#include与#includeC+的标准库很大,大的难以置信。为了避免名字冲突,C+标准库将所有标识都定义在namespacestd里。但这带来了一个新问题,无数现有的C+代码都依赖于使用了多年的伪标准库中的功能,例如,声明在,等头文件中的功能。现有软件没有针对使用名字空间而进行设计,如果用std来包装标准库将导致现有代码不能用。因此,标准委员会决定为包装了std的那部分标准库构件创建新的头文件名。生成新头文件的方法仅仅是将现有C+头文件名中的.h去掉,所以变成了,变成了等等。,10,2019/11/19,程序结构,头文件补充说明#include与#include对于C头文件,采用同样的方法,但在每个名字前还要添加一个c。所以C的变成了,变成了,等等。,11,2019/11/19,程序结构,头文件补充说明需要说明的是:旧的C+头文件(iostream.h等)是官方反对使用的(明确列出不再支持),但旧的C头文件(stdio.h等)则没有(以保持对C的兼容性)。实际上,编译器制造商不会停止对客户现有软件提供支持,所以可以预计,旧的C+头文件在未来几年内还是会被支持。旧的C+头文件名如将会继续被支持,尽管它们不在官方标准中。这些头文件的内容不在名字空间std中。新的C+头文件如包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应)标准C头文件如继续被支持。头文件的内容不在std中具有C库功能的新C+头文件具有如这样的名字。它们提供的内容和相应的旧C头文件相同,只是内容在std中【引入namespacestd,头文件还会有很多改变。所以,要么就采用旧头文件名,要么就应该完全改用新的标准名称】,12,2019/11/19,编程格式,编程格式如同书法格式虽不会影响程序的功能,但会影响可读性;影响可读性,就会影响心情;影响心情,就会影响效率;影响效率,就会影响工作;影响工作,就会影响钱途;影响钱途,就会影响人生!因此按规范写好程序的格式是一件影响人生的大事!,13,2019/11/19,编程格式,程序块要采用缩进风格,缩进的空格数为4个。相对独立的程序块之间、变量说明之后必须加空行。较长的语句(大于80个字符)要分多行书写,操作符放在新行之首,划分出的新行要进行适当的缩进,例如:perm_count_msg.head.len=NO7_TO_STAT_PERM_COUNT_LEN+STAT_SIZE_PER_FRAM*sizeof(_UL);循环、判断等语句中若有较长的表达式或语句,则要进行适当的划分,长表达式要在低优先级操作符处划分缩进,操作符放在新行之首,例如:if(taskno运算符除外),例如:inta,b,c;a=b+c;for(a=0;a10;a+)!+-charcValue;floatfValue;char*pValue;对于数据成员:intm_nValue;函数命名一般的命名方式为“动词+名词”,例如:SetValue();GetValue();,20,2019/11/19,编程格式,命名命名方式因人而异,没有一个很统一的或没有缺陷的命名方式。同注释一样,命名最重要的是准确、清晰、保持一致。,21,2019/11/19,表达式和基本语句,运算符优先级,22,2019/11/19,表达式和基本语句,试题(选自智乐游戏软件面试题2008-10-10)inta=2,b=3,c=10,k=21,m=8,e=2;intp=(a+b*c,b+a*c);intd=20/8*8;intf=k+%+m*2;e*=a*b+c;请问p、d、f、e的值?,23,2019/11/19,表达式和基本语句,if语句C+/C语言提供if语句的动机是:根据指定的表达式是否为true,有条件的执行一条语句或语句块。它是C+/C中最简单、最常用的语句。if语法的基本形式如下:if(condition)statement()elsestatement(),24,2019/11/19,表达式和基本语句,循环语句forC+/C循环语句中,for的使用频率最高,while其次。在使用for嵌套时需要注意效率,例如:for(row=0;row5;row+)for(col=0;col100;col+)比反过来写的效率要高很多。【应当将最长的循环放在内层,最短的放在最外层,以减少CPU跨循环层的次数】,25,2019/11/19,表达式和基本语句,循环语句for【建议在for语句中的循环控制变量的取值采用“半开半闭区间”写法】。例如:for(intx=0;xN;x+)比for(intx=0;x=N-1;x+)的写法更加直观。,26,2019/11/19,表达式和基本语句,switch语句C+/C提供switch语句,作为一种“在一组互斥的项目中作选择”的替代方法。switch表达式可以是任意复杂的表达式,包括函数调用的返回值。它的值与每个case标签相关联的值作比较,直到某个匹配成功或全部标签比较完毕。普遍的误解是:只有与被匹配的case标签相关联的语句才被执行。实际上程序从该点开始执行并继续越过case边界直到switch语句结束。【case后面的值必须是整型类型(包括字符型)的常量表达式】例如:case3.14:caseival:都是错误的。这是因为通过反汇编查看switch的原理发现,它实际是使用“cmpdword,常数”的形式,即使用cmp而并非fcmp,并且case后面的值必须为常数。,27,2019/11/19,表达式和基本语句,试题(选自横河重机面试题2007-11-1)char*str=“12132143”;intsub=0,num1=0,num2=0,num3=0,num4=0;while(strsub!=0)switch(strsub)case1:num1+;c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论