c教学体会.ppt

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

C语言程序设计 教学体会 孙志岗的“个人体会” 代码风格 代码风格就是程序员的书法 比书法好学得多,基本不需要特别练习 但是坏习惯一旦养成,就像书法一样难以改变 是最易获得和实践的软件工程规则 对设计程序结构、培养团队精神都大有帮助 不给学生看到任何一个风格糟糕的例子 代码风格 标识符命名 宏全部大写 Windows风格和Unix风格 VariableName variable_name 缩进 “{”位置的两种风格 用4格tab还是用空格 空格 增强单行清晰度 每行代码长不要超过80 空行 自然段 表达式尽量简单 下面程序在不同编译器可能产生不同结果,而且可读性差 a = i++ + i++ + i++; printf(%d, %d, %d, i++, i++, i++); for (i = 0; i != 0 i++; ); 很多教科书自作聪明地创造了很多复杂的题目来难为学生,就算它们的用法正确,实践中也未必用得到 全局变量要避免使用吗? 全局变量增大了模块之间的耦合度,而且不利于排错,罪大恶极 这罪恶不能怪全局变量,只能怪无限制的对全局变量的改写 不要让全局变量有复杂的数据结构 一旦数据结构变了,真的大祸临头了 最好利用static特性用函数对其进行封装 不要把goto判处死刑 问题不是出在goto,而是出在对标号的滥用 结构化程序设计中一个被忽视的原则 单入口,单出口 只要符合此原则,什么都可以用 goto在处理异常流程问题时,非常好用 退出多重循环 统一的错误处理 吓死人的指针 “指针”出现,“难”字当头 老师吓学生,学生再吓学生的学生…… 从原理上了解指针,它是那么简单 一个普通变量,其值是一个内存地址 格守下列原则,指针使用永不出错 永远要清楚每个指针指向了哪里 永远要清楚指针指向的位置是什么 指针的兄弟:数组 不要把数组和指针分开,它们是紧密相连的 数组最简单 数组名是指针,数组成员是变量 多维数组麻烦些 关键要知道它在内存中是怎么分布的 脑细胞可贵,千万别用来背 算符优先级 知道先算括号足以 这样方便自己,也方便他人 库函数用法 会查联机帮助、手册最重要 变量占用的字节数 不同平台,不同编译器,可能会迥然不同 struct占字节数由编译参数决定 凡是需要字节数的地方,一律用sizeof获得 没有“真”“假” 逻辑运算的结果只有整型数“0”和“非0” 很多编译器给出的非0结果是1,但这是特例 if (0) printf(“永远不会被执行”); while (1) { /* 死循环 */ } 下列问题,要上升到阶级斗争的高度 指针指向不明 数组下标越界 数值运算溢出 除数为0 不检查函数的返回值 变量不初始化就使用 比较相等时用=,没用== 用==比较两个浮点数是否相等 返回局部变量的指针 malloc不free open不close 危险的scanf scanf简便好用 不做参数类型匹配检查 不限制用户输入字符串长度 很多黑客攻击都是从这里开始的 \0给字符串处理带来的 危险 假如\0不存在,printf、strcpy、strcmp等都将越界访存 n族函数可以解决此问题 处理字符串时,时刻要警惕\0是否在其该出现的位置 C语言三大定律 表达式定律 任何能产生数值结果的运算、操作都可以作为表达式,并可以放到任何需要数值结果的地方,只要数值类型能够匹配 常见的可以产生数值结果的运算和操作 算术、逻辑、位运算等 ? :、、*等 有返回值的函数 赋值 常见的需要数值的地方有: 赋值 条件判断 函数调用 C语言三大定律 类型定律 任何类型都可以在任何需要类型的地方使用;用任何类型定义的变量都要占用内存 已知特例 函数返回值不能定义为数组类型 函数参数定义为数组类型,此时该参数不占用内存,而是共享函数调用者传入的数组空间 常用类型 基本数据类型、指针、数组、结构…… 常见的需要类型的地方 定义变量 定义指针、数组和结构 函数参数和返回值 sizeof C语言三大定律 参数传递定律 函数调用时的参数传递永远都是传值调用,把实参的值拷贝给形参 实参:调用者提供的参数 形参:函数定义的参数 基本数据类型无容置疑 struct也无容置疑 指针作为参数时,把指针变量的内容(就是其指向的内存地址)做了拷贝 数组名作为参数时,把它等同于指针看待了 要点 简单为美 宣扬“简单为美”的科学思想,摒弃刻意的复杂 原理为纲 C语言复杂的表面都是简单的原理的外在表现 人性为本 计算机是人设计的,具有人性 面向应用 避免“学是一回事,使用是另一回事” 无需背诵 该记的,用着就记住了;用不着的,背下来也会忘 没有绝对 Match is best! 为什么追求“简单为美”? C语言没有权威,什么都不可信 书当然不可信,任何书都是 背

文档评论(0)

牛X文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档