- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 函数与程序结构 5.1 C程序的一般结构 5.1.1 模块化程序设计 一个较大的程序一般应分为若干个程序模块,每一个模块用来实现一个特定的功能。 C语言中,模块使用函数实现的。 5.1.2 C程序的一般结构 函数: 构成C语言程序的基本功能模块,是一段程序,它完成一项相对独立的任务。 例如: printf( ); 一个c程序由一个主函数和若干个函数组成 C程序的执行总是从主函数开始,又从主函数结束,其他函数只有通过调用关系发生作用。 函数相互独立,不能嵌套定义 。 从用户使用的角度看,函数有两种: (1)标准函数,即库函数 (2)用户自己定义的函数 从函数的形式看,函数分两类: (1) 无参函数 一般用来执行指定的一组操作。 (2) 有参函数 例: e5-1.c e5-1-2.c 5.2 函数的定义与调用 5.2.2 函数的调用 函数调用的一般形式为: 函数名(实参表列); 例: e5-2-1.c sum=1!+2!+3!+…+6! 被调用函数的说明和函数原型 在调用自定义函数之前,应对该函数进行说明,一般格式如下: 函数类型 函数名(数据类型1[ 参数名1] [, 数据类型2[ 参数名2]…); 例 e5-4.c 5.2.3 函数的参数传递 【例】调用函数时的数据传递。 #include stdio.h void main() { int max(int,int); int a,b,c; printf(input integer a,b:); scanf(%d,%d,a,b); c=max(a,b); printf(max is %d\n,c); } int max(int x,int y) { int z; z=xy?x:y; return(z); } 说明: 5.3 局部变量与全局变量 5.3.1 局部变量 在函数内部定义的变量称为局部变量。 函数内部定义的变量只在该函数范围内有效, 不同函数中的局部变量可以重名,互不混淆。 5.3.2 全局变量 5.4 变量的存储类型 变量的属性:数据类型和存储类型。 自动类型(auto)、静态类型(static)、寄存器类型(register)、外部类型(extern)。 5.4.2 自动变量 函数中的局部变量,如不做专门的说明(说明为静态的存储类别),都是动态分配存储空间的,存储在动态存储区中。 例: auto int x; ⑴ 内存分配 调用函数或执行分程序时在动态存储区为其分配存储单元,函数执行结束,所占内存空间即刻释放。 ⑵ 变量的初值 定义变量时若没赋初值,变量的初值不确定;如果赋初值则每次函数被调用时执行一次赋值操作。(e5-1-2.c) ⑶ 生存期 在函数执行期间。 ⑷ 作用域 自动变量所在的函数内。 5.4.3 静态变量 ⑴ 内存分配 编译时,将其分配在内存的静态存储区中,程序运行结束释放该单元。 ⑵ 静态变量的初值 若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值 。 ⑶ 生存期 整个程序的执行期间。 ⑷ 作用域 局部静态变量的作用域是它所在的函数或分程序。全局静态变量的作用域是从定义处开始到本源文件结束。 5.5 函数的嵌套与递归调用 5.5.1 函数的嵌套调用 C语句不能嵌套定义函数,但可以嵌套调用函数 例:e5-7.c 5.7 编译预处理 编译预处理是指在系统对源程序进行编译之前,对程序中某些特殊的命令行的处理,预处理程序根据源代码中的预处理命令修改程序。 例:#include “stdio.h” #define PI 3.1415926 5.7.1 宏定义 【例】 #define SQ (x*x) #define CUBE(x) (SQ(x)*x) #define FIFTH(CUBE(x)*SQ(x)) void main() {… y=FIFTH(a); … } 5.7.2 文件包含 #inclu
文档评论(0)