第7篇C语言 函数.ppt

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
外部变量的定义与说明。 int vs(int xl,int xw) { extern int xh; /*外部变量xh的说明*/ int v; v=xl*xw*xh; /*直接使用外部变量xh的值*/ return v; } main() { extern int xw,xh; /*外部变量的说明*/ int xl=5; /*内部变量的定义*/ printf(xl=%d,xw=%d,xh=%d\nv=%d,xl,xw,xh,vs(xl,xw)); } int xl=3,xw=4,xh=5; /*外部变量xl、xw、xh的定义*/ 程序区 静态存储区 动态存储区 数据,变量存放 内存分配 7.9 变量的存储类别(生存期、生命期 ) 变量的存储方式 变量从空间上分为局部变量、全局变量。 从变量存在的时间的长短(即变量生存期)来划分,变量还可以分为:动态存储变量、静态存储变量。变量的存储方式决定了变量的生存期。 如果全局变量用static修饰,并不是说是静态的,而是说,只对本模块有效。 自动(局部变量)(auto) 动态存储方式 寄存器(局部变量)(register) 存储方式 静态(局部变量)(static) 静态存储方式 静态全局变量(全局变量全部是静态 的,不必用static修饰) 静态存储变量: 存放于静态存储区,在程序整个运行过程中,始终占据固定的内存单元。 动态存储变量: 存放于动态存储区,根据程序的运行状态(如:函数调用)而临时分配的单元,且单元并不固定。 每个变量或函数都有两个属性:数据类型和数据存储类别 7.9.2 auto变量 auto型存储方式是C语言默认的局部变量的存储方式,也是局部变量最常使用的存储方式。 自动变量属于局部变量的范畴,作用域限于定义它的函数或复合语句内。 自动变量所在的函数或复合语句执行时,系统动态为相应的自动变量分配存储单元,当自动变量所在的函数或复合语句执行结束后,自动变量失效,它所在的存储单元被系统释放,所以原来的自动变量的值不能保留下来。若对同一函数再次调用时,系统会对相应的自动变量重新分配存储单元。 定义格式 :[auto] 类型说明 变量名; auto为自动存储类别关键词,可以省略,缺省时系统默认auto. 7.9.3 用static声明局部变量 静态局部变量的定义格式 : static 类型说明 变量名[=初始化值]; static是静态存储方式关键词,不能省略。 静态局部变量的存储空间是在程序编译时由系统分配的,且在程序运行的整个期间都固定不变。该类变量在其函数调用结束后仍然可以保留变量值。下次调用该函数,静态局部变量中仍保留上次调用结束时的值。 静态局部变量的初值是在程序编译时一次性赋予的,在程序运行期间不再赋初值,以后若改变了值,保留最后一次改变后的值,直到程序运行结束。 例:求n! int fac (n) int n; {static int f=1; f=f?n; return(f); } main ( ) { int i; for (i=1; i=5; i++) printf (%d!=%d\n, i, fac(i)); } 运行结果为: 1!=1 2!=2 3!=6 4!=24 5!=120 每一次调用fac(i),打印一个i!,同时保留这个i!的值以便下次再乘(i+1)。 7.9.4 register 变量 register 变量一般分配register 给相应变量。寄存器比内存操作要快很多,所以可以将一些需要反复操作的局部变量存放在寄存器中。 定义格式 :register 类型说明 变量

文档评论(0)

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

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

1亿VIP精品文档

相关文档