06第6章 函数与宏定义.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可简化表示为 n=1 n=2 n=3 n=4 fac=4! fac=3! fac=2! fac=1 n=5 当变成机器代码时,将其拉成直线(线性程序代码)。 6.5 编译预处理 目的: 为了简化程序的编写,提高程序的可移植性、可读性、模块化。 C语言设计了若干命令–––编译预处理命令,并可出现于程序当中。 处理流程: 第一次编译扫描时,将预编译命令处理完,然后再进行正式编译,生成目标代码。 1. 宏定义命令; 有三种类型的预处理命令: 为了与C语句区别,这些命令均以“ #”开头。 2. 文件包含命令; 3. 条件编译命令。 (3)程序从主函数main()开始执行,首先执行的scanf( ),输入数,然后调用comb(n,m),调用comb的过程中,要调用fac( )。fac( )的调用是嵌套在函数comb( )的调用中进行的 ,其嵌套调用过程如下: 输出根x main函数 comb函数 fac函数 调用comb函数 调用fac函数 6.2 变量作用域及存储类型  1、局部变量 凡在函数(含main 函数)内部定义的变量称为局部变量。 局部性: 局部变量仅在函数内部有效,它包括: 一、变量作用域    根据变量的有效作用范围,变量可分为局部变量和全局变量。 2. 形式参数; 3. 在复合语句中可定义仅复合语句中有效的临时变量。 不同的函数可具有同名的变量, 它们占不同的内存单元, 互不影响。 1. 函数中定义的变量; 2、全局变量 一个源文件中,在所有函数之外定义的变量为全局变量。 有效性: 自定义位置开始至文件结尾全部有效。 char f2(x,y); int c, y; { int i, j; ? } main ( ) } ? } 例: int p=1, q=5; float f1(a) int a; {int b, c; ? } char c1, c2; p,q的作用范围 c1, c2的作用范围 1. 全局变量所作用到的函数,相当于这些函数的公共变量。于是,当一个函数对其值进行改变后,另一个函数使用该变量的值亦相应改变。好处: 函数之间值传递。 2. 不要随意使用全局变量。一是始终占据内存单元;二是由于函数依赖于外部定义的变量,减少了通用性。 3. 不在全局变量作用域内的函数。若要使用全局(外)变量,需在函数体内加上extern保留字于以说明。 4. 全局和局部变量同名时,局部变量有效。 例:分析m作为全局变量和局部变量在程序中各个部分时的值。 int m=13; int fun(x,y) int x,y; {int m=3; printf(m1=%d\n,m); return(x*y-m); } main() {int a=6,b=7; printf(m2=%d\n,m); printf(%d\n,fun(a,b)/m); } m x, y a, b 全局变量m的作用范围 其运行结果为: m2=13 /*全局变量的m的值*/ m1=3 /*局部变量m的值*/ 3 /*函数调用的结果*/ float f1 (x) int x; {extern int a, b; ? } int a=0; b= –1 main ( ) { ? } a, b作用域 例: 二、 变量的存储类型 1、变量的存储类别 程序区 静态存储区 动态存储区 数据,变量存放 内存分配 C语言特有的方式。表达了一个变量存在的时间。 静态存储变量: 存放于静态存储区,在程序整个运行过程中,始终占据固定的内存单元。 动态存储变量: 存放于动态存储区,根据程序的运行状态(如:函数调用)而临时分配的单元,且单元并不固定。 以上为两大类,又分为四种具体形式 2. 静态(static)变量 3. 寄存器型变量 4. 外部(extern)变量 前面学习的局部、全局变量均以上述方式中的一种形式存储。 1. 自动型变量(auto) 局部变量既可以静态方式 , 又可以动态方式存储。 动态方式: auto int a, b; 2、局部变量存储形式 则: a, b为自动型,存入动态区。在该函数被调用时才分配单元,函数调用结束时释放。 auto一般省略。以前用到的变量均为auto型, (除加static说明的之外)。 (1) 若定义时赋初值,则程序运行中仅在第

文档评论(0)

dart001 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档