C内部培训-第一讲CodingStyl.ppt

上传人:max****ui 文档编号:8290701 上传时间:2020-03-28 格式:PPT 页数:29 大小:2.37MB
返回 下载 相关 举报
C内部培训-第一讲CodingStyl.ppt_第1页
第1页 / 共29页
C内部培训-第一讲CodingStyl.ppt_第2页
第2页 / 共29页
C内部培训-第一讲CodingStyl.ppt_第3页
第3页 / 共29页
点击查看更多>>
资源描述
1 2020 3 28 C 内部培训第一讲codingstyle 张锴2009 08 13 2 2020 3 28 说明 本次培训是以交流为目的 意在通过培训的方式使诸位对C 基础编程知识有初步的了解 此次培训所摘取的资料皆来自前人的著作 本人才疏学浅 不敢妄言自大 谨此对他们的成果进行肤浅的讲解 如果诸位能从本次培训中有所收获 那将是本人的巨大荣幸 在编写此次培训文档过程中引用了大量前人的宝贵资料 经验 有感于前辈们对学识的执着探取与大公无私的精神 借此机会对他们表示崇高的敬意 3 2020 3 28 第一讲codingstyle 4 2020 3 28 程序结构 程序基本组成每个C 程序通常分为两个文件 一个用于程序声明 即头文件 h 另一个用于程序的实现 即定义 cpp 更为正规的程序会将 用于程序实现的文件 再细化分为两个文件 一个用于实现头文件中声明的函数 另一个用于程序的主干实现 main 5 2020 3 28 程序结构 6 2020 3 28 程序结构 版权意识有人说 使用盗版软件就像在马路上拿枪抢劫一样 我很穷 没钱买正版 但要有感恩的心 版权声明版本信息文件名称 标识符 摘要当前版本号 作者 修改者 完成日期版本历史信息 7 2020 3 28 程序结构 头文件的结构版权声明预处理函数和类的声明 头文件中不能定义函数 变量 const常量 内联函数 函数模板除外 如果需要在多个 cpp中使用同一个全局变量 需要在一个 cpp中定义 并在相关头文件中使用extern声明 8 2020 3 28 程序结构 头文件的作用通过头文件调用库功能 dll 在很多场合 源代码不便向用户公布 只要向用户提供头文件和二进制的库即可 用户只需按照头文件中的接口声明来调用库功能 而不必关心接口是怎么实现的 编译器会从库中提取相应的代码 头文件能加强类型安全检查 如果某个接口被实现或使用时 其实现方式与声明不符 编译器就会报错 这一简单规则能大大减轻程序员调试 改错的负担 9 2020 3 28 程序结构 头文件补充说明 include与 includeC 的标准库很大 大的难以置信 为了避免名字冲突 C 标准库将所有标识都定义在namespacestd里 但这带来了一个新问题 无数现有的C 代码都依赖于使用了多年的伪标准库中的功能 例如 声明在 等头文件中的功能 现有软件没有针对使用名字空间而进行设计 如果用std来包装标准库将导致现有代码不能用 因此 标准委员会决定为包装了std的那部分标准库构件创建新的头文件名 生成新头文件的方法仅仅是将现有C 头文件名中的 h去掉 所以变成了 变成了等等 10 2020 3 28 程序结构 头文件补充说明 include与 include对于C头文件 采用同样的方法 但在每个名字前还要添加一个c 所以C的变成了 变成了 等等 11 2020 3 28 程序结构 头文件补充说明需要说明的是 旧的C 头文件 iostream h等 是官方反对使用的 明确列出不再支持 但旧的C头文件 stdio h等 则没有 以保持对C的兼容性 实际上 编译器制造商不会停止对客户现有软件提供支持 所以可以预计 旧的C 头文件在未来几年内还是会被支持 旧的C 头文件名如将会继续被支持 尽管它们不在官方标准中 这些头文件的内容不在名字空间std中 新的C 头文件如包含的基本功能和对应的旧头文件相同 但头文件的内容在名字空间std中 在标准化的过程中 库中有些部分的细节被修改了 所以旧头文件和新头文件中的实体不一定完全对应 标准C头文件如继续被支持 头文件的内容不在std中具有C库功能的新C 头文件具有如这样的名字 它们提供的内容和相应的旧C头文件相同 只是内容在std中 引入namespacestd 头文件还会有很多改变 所以 要么就采用旧头文件名 要么就应该完全改用新的标准名称 12 2020 3 28 编程格式 编程格式如同书法格式虽不会影响程序的功能 但会影响可读性 影响可读性 就会影响心情 影响心情 就会影响效率 影响效率 就会影响工作 影响工作 就会影响钱途 影响钱途 就会影响人生 因此按规范写好程序的格式是一件影响人生的大事 13 2020 3 28 编程格式 程序块要采用缩进风格 缩进的空格数为4个 相对独立的程序块之间 变量说明之后必须加空行 较长的语句 大于80个字符 要分多行书写 操作符放在新行之首 划分出的新行要进行适当的缩进 例如 perm count msg head len NO7 TO STAT PERM COUNT LEN STAT SIZE PER FRAM sizeof UL 循环 判断等语句中若有较长的表达式或语句 则要进行适当的划分 长表达式要在低优先级操作符处划分缩进 操作符放在新行之首 例如 if taskno max act task number n7stat stat item valid stat item 14 2020 3 28 编程格式 不允许把多个短语句写在一行中 即一行只写一条语句 例如 rect length 0 rect width 0 错误rect length 0 rect width 0 正确对齐只使用空格键 不使用TAB键 以免用不同的编辑器阅读程序时 因TAB键所设置的空格数目不同而造成程序布局不整齐程序块的分界符 如大括号 和 应各独占一行并且位于同一列 同时与引用它们的语句左对齐 15 2020 3 28 编程格式 在两个以上的关键字 变量 常量进行操作时 它们之间的操作符以前 之后或者前后要加空格 与 运算符除外 例如 inta b c a b c for a 0 a 10 a 等单目运算符不用加空格 例如 aa a 16 2020 3 28 编程格式 注释C 中 程序块的注释采用 行注释采用 注释的原则是有助于对程序的阅读理解 在该加的地方都加了 注释不宜太多也不能太少 注释语言必须准确 易懂 简洁 文件头部需要注释说明 注释要列出 版本说明 版本号 编写日期 作者 修改日志等 函数头部应该进行注释 列出 函数功能 参数说明 返回值等 17 2020 3 28 编程格式 注释注释的内容要清楚 明了 含义准确 防止二义性 避免在注释中使用缩写 变量 常量 宏定义的注释应该放在其上方相邻位置或右方 在程序块的结束行右方加注释标记 表明程序块的结束 例如 if if 18 2020 3 28 编程格式 注释关于注释 有些说明和用法比较教条 本人觉得注释不是多多益善 而是关键 精确 风格保持一直即可 19 2020 3 28 编程格式 变量命名比较著名的是 匈牙利 法 即 变量类型 变量名 例如 intnValue charcValue floatfValue char pValue 对于数据成员 intm nValue 函数命名一般的命名方式为 动词 名词 例如 SetValue GetValue 20 2020 3 28 编程格式 命名命名方式因人而异 没有一个很统一的或没有缺陷的命名方式 同注释一样 命名最重要的是准确 清晰 保持一致 21 2020 3 28 表达式和基本语句 运算符优先级 22 2020 3 28 表达式和基本语句 试题 选自智乐游戏软件面试题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 2020 3 28 表达式和基本语句 if语句C C语言提供if语句的动机是 根据指定的表达式是否为true 有条件的执行一条语句或语句块 它是C C中最简单 最常用的语句 if语法的基本形式如下 if condition statement elsestatement 24 2020 3 28 表达式和基本语句 循环语句forC C循环语句中 for的使用频率最高 while其次 在使用for嵌套时需要注意效率 例如 for row 0 row 5 row for col 0 col 100 col 比反过来写的效率要高很多 应当将最长的循环放在内层 最短的放在最外层 以减少CPU跨循环层的次数 25 2020 3 28 表达式和基本语句 循环语句for 建议在for语句中的循环控制变量的取值采用 半开半闭区间 写法 例如 for intx 0 x N x 比for intx 0 x N 1 x 的写法更加直观 26 2020 3 28 表达式和基本语句 switch语句C C提供switch语句 作为一种 在一组互斥的项目中作选择 的替代方法 switch表达式可以是任意复杂的表达式 包括函数调用的返回值 它的值与每个case标签相关联的值作比较 直到某个匹配成功或全部标签比较完毕 普遍的误解是 只有与被匹配的case标签相关联的语句才被执行 实际上程序从该点开始执行并继续越过case边界直到switch语句结束 case后面的值必须是整型类型 包括字符型 的常量表达式 例如 case3 14 caseival 都是错误的 这是因为通过反汇编查看switch的原理发现 它实际是使用 cmpdword 常数 的形式 即使用 cmp 而并非 fcmp 并且case后面的值必须为常数 27 2020 3 28 表达式和基本语句 试题 选自横河重机面试题2007 11 1 char str 12132143 intsub 0 num1 0 num2 0 num3 0 num4 0 while str sub 0 switch str sub case 1 num1 case 2 num2 case 3 num3 case 4 num4 sub 请问 num1 num2 num3 num4的值 28 2020 3 28 备注 本章节内容摘自 林锐 高质量C C编程指南 华为编码规范和范例StanleyBLippman C Primer ScottMeyers EffectiveC 29 2020 3 28 谢谢
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!