Chap 10 函数及程序结构.ppt

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

编译预处理是C语言编译程序的组成部分,它用于解释处理C语言源程序中的各种预处理指令。 文件包含(#include)和宏定义(#define)都是编译预处理指令 在形式上都以“#”开头,不属于C语言中真正的语句 增强了C语言的编程功能,改进C语言程序设计环境,提高编程效率 10.4 编译预处理 C程序的编译处理,目的是把每一条C语句用若干条机器指令来实现,生成目标程序。 由于#define等编译预处理指令不是C语句,不能被编译程序翻译,需要在真正编译之前作一个预处理,解释完成编译预处理指令,从而把预处理指令转换成相应的C程序段,最终成为由纯粹C语句构成的程序,经编译最后得到目标代码。 编译预处理 编译预处理的主要功能: 文件包含(#include) 宏定义(#define) 条件编译 编译预处理功能 ctype.h 字符处理 math.h 与数学处理函数有关的说明与定义 stdio.h 输入输出函数中使用的有关说明和定义 string.h 字符串函数的有关说明和定义 stddef.h 定义某些常用内容 stdlib.h 杂项说明 time.h 支持系统时间函数 常用标准头文件 10.1.4 全局变量与程序文件模块 局部变量 作用范围:函数(复合语句)内部 生命周期:从函数调用开始-函数调用结束 全局变量 作用范围:从定义处到源文件结束 生命周期:从程序执行开始-程序运行结束 静态局部变量 作用范围:局部变量 生命周期:全局变量 外部变量(extern) 在某个程序文件模块中定义了全局变量 该全局变量可以在整个程序的所有文件模块中起作用 在其他模块中如果要使用该全局变量,必须将它声明为外部变量 说明这是一个在其他模块中定义的全局变量 int x; void main() {……… } 文件名 file1.c extern x; /*使用file1.c中的全局变量 x */ f1( ) { ……… } 文件名 file2.c 扩大全局变量的作用域 static int x; void main() {……… } 使全局变量只限于本文件引用,而不能被其他文件引用 文件名 file1.c extern x; /*使用file1.c中的全局变量 x */ int f1( ) { ……… } 文件名 file2.c 无法引用 静态全局变量 10.1.5 寄存器变量和外部变量 寄存器变量 register int 变量表; 外部变量 extern 变量名表; 只起说明作用,不分配存储单元,对应的存储单元在全局变量定义处分配。 10.1.6 函数与程序文件模块 外部函数 函数能够被程序中的其他程序文件模块调用 在其他文件模块中调用该函数前,声明为外部函数 extern 函数类型 函数名(参数表说明); extern int f1(); int main(void) { ……… f1( ); ……… } 文件名 file1.c int f1( ) { ……… } 文件名 file2.c 调用另一模块中的函数 extern int f1(); int main(void) { ……… f1( ); ……… } static int f1( ) { ……… } 内部函数 使函数只能在本程序文件模块中被调用 static 函数类型 函数名(参数表说明); 文件名 file1.c 文件名 file2.c 无法调用 10.2 递归函数 10.2.1 程序解析 10.2.2 递归函数基本概念 10.2.3 递归程序设计 10.2.1 程序解析 例10-3 用递归函数求n!。 #include stdio.h double fact(int n); int main(void) { int n; scanf (%d, n); printf (%f, fact (n) ); return 0; } double fact(int n) /* 函数定义 */ { double result; if (n==1 || n == 0) /* 递归出口 */ result = 1; else result = n * fact(n-1); return result; } 10.2.2 递归函数基本概念 递推法与递归法求阶乘 递推法 n!=1*2*3*....*n for (result = 1, i = 1

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档