哈工大 c语言04_function

哈工大 c语言04_function

ID:5317006

大小:159.50 KB

页数:26页

时间:2017-11-23

哈工大 c语言04_function_第1页
哈工大 c语言04_function_第2页
哈工大 c语言04_function_第3页
哈工大 c语言04_function_第4页
哈工大 c语言04_function_第5页
资源描述:

《哈工大 c语言04_function》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C程序设计语言第4章函数与程序结构孙志岗sun@hit.edu.cnhttp://sunner.cn大话三国懿问曰:“孔明寝食及事之烦简若何?”   使者曰:“丞相夙兴夜寐,罚二十以上皆亲览焉。所啖之食,日不过数升。”   懿顾谓诸将曰:“孔明食少事烦,其能久乎?”程序设计的艺术算法设计的艺术程序的灵魂DonaldE.Knuth,"TheArtofComputerProgramming",清华大学出版社,2002结构设计的艺术程序的肉体“..thelargertheproject,themoreessentialthestructuring!”—Dijkstra,1968

2、模块化(Parnas,1972)结构化(Structural)面向对象(Object-Oriented)面向组件(Component-Oriented)面向智能体(Agent-Oriented)……假如不模块化读多少行的程序能让你不头疼?main()当中能放多少行程序?假如printf()函数由10行代码替换,那么你见过的程序会成什么样子?如果所有代码都在main()当中,怎么团队合作?如果代码都在一个文件中,怎么团队合作?模块化的优点模块各司其职每个模块只负责一件事情,它可以更专心便于进行单个模块的设计、开发、调试、测试和维护等工作一个模块一个模块地完成,最后再将它们集

3、成开发人员各司其职按模块分配任务,职责明确并行开发,缩短开发时间分而治之(Wirth,1971) 信息隐藏(Parnas,1972)函数(function)和模块(module)函数是C语言中模块化编程的最小单位可以把每个函数看作一个模块若干相关的函数可以合并作一个“模块”main()printf()scanf()power()putchar()getchar()main()stdio:printf()scanf()putchar()getchar()mymdl:power()函数的分类函数生来都是平等的,没有高低贵贱之分,只有main()稍微特殊一点点库函数ANSIC定

4、义的标准库函数符合标准的C语言编译器必须提供这些函数函数的行为也要符合ANSIC的定义第三方库函数由其它厂商自行开发的C语言函数库不在标准范围内,能扩充C语言的功能自定义函数自己编写的函数包装后,也可成为函数库,供别人使用函数定义(definition)类型函数名(类型参数1,类型参数2,……) {函数体;return表达式; }返回值类型标识符参数表返回值函数出口函数定义(definition)函数是这样的一种运算:函数名说明运算规则参数是运算的操作数返回值是运算的结果当函数执行到return语句或}时,函数的运算停止。程序从当次调用函数的地方继续执行函数可以有多个re

5、turn,但最好只有一个且是最后一行用void定义返回值类型函数没有运算结果,没有返回值return语句之后不需要任何表达式用void定义参数,表示没有参数参数表里的参数(叫形式参数,parameter)也是函数的语句块内的变量函数调用(call)函数名(表达式1,表达式2,……);调用一个函数之前,先要对其返回值类型、函数名和参数进行声明(declare)不对函数进行声明是非常危险的函数定义也有声明函数的效果调用函数时,提供的表达式(叫实际参数,argument)和该函数的形式参数必须匹配数目一致类型一一对应(会发生自动类型转换)表达式的值赋值给对应的参数返回值可以按需

6、处理realeql.c函数调用的过程函数的每次执行都会建立一个全新的独立的环境在“栈”中为函数的每个变量(包括形式参数)分配内存把实际参数的值复制给形式参数开始执行函数内的第一条语句函数内的代码在这个独立的环境内工作函数退出时求出返回值,将其存入一个可以被调用者访问的地方(x86中通常使用EAX寄存器)收回分配给所有变量(包括形式参数)的内存程序控制权交给调用者,调用者拿到返回值,将其作为函数调用表达式的结果main()、printf()和scanf()特殊吗?main()C语言允许不对函数参数和返回值类型进行说明甚至可以连函数名都不声明此时默认该函数的参数是不定个数的i

7、nt型该函数返回值为int型永远不要利用此特性!printf()、scanf()变长参数表,缺点:对参数类型和个数无法严格验证,易使用出错使用函数要注意每个函数只完成一个功能(包括main())对函数的功能可以用不含连词的一句话描述函数不能过长1986年IBM在OS/360的研究结果:大多数有错误的函数都大于500行1991年对148,000行代码的研究表明:小于143行的函数比更长的函数更容易维护函数一定要对传进来的非法参数做点什么向调用者提供错误信息assert()safediv.c用函数完成此题编程先

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。