C语言程序设计-第06章-函数.ppt

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

auto变量(自动变量) 【格式】在函数(或复合语句)内部定义 [auto] 数据类型名 变量名表; 例:auto int a; 【说明】 由于auto可省略,所以,函数内所有未加存储类别说明符定义的局部变量均为自动变量。 自动变量属于自动存储类。 自动变量仅在定义该变量的函数体或程序块内有效(见例6.6.1)。 对自动变量赋初值,不是在编译时进行的,而是在函数调用时进行,每调用函数一次,就重新给一次初值(见例6.6.3)。如果自动变量在定义时未被初始化,则它的值是不确定的。 自动变量是C程序中使用最多的变量。【好处】是:用之则建,用完即撤。节省存储空间。 自动变量是局部变量;函数的形参也是一种自动变量。 * static局部变量(静态局部变量) 【格式】在函数(或复合语句)内部定义: static 数据类型名 变量名表; 例:static int a=3; 【说明】 与自动变量相同的是,静态局部变量的作用域也是从其定义的位置起,到函数体(或复合语句)结束为止(见例6.6.3程序2)。与自动变量不同的是: (1)在整个程序运行期间,静态局部变量在内存的静态存储区中占据固定的存储单元,即在定义该变量的函数被调用结束后其所占据的存储单元并不释放,下次该函数再被调用时,静态局部变量仍使用原来的存储单元。由于并不释放这些存储单元,因此,上次调用结束时保存在这些存储单元中的值得以保留,并且静态局部变量的生存期是程序的整个运行期间。而自动局部变量则时而存在时而撤销。 (2)静态局部变量的初值是在编译时赋给的(仅赋值一次),即在程序运行时它已有初值。以后定义该变量的函数每次调用时,不再赋初值,而是使用上次函数调用结束时留下来的值。如果基本类型的静态局部变量在定义时未赋初值,编译时会自动被初始化为0。而对自动变量,系统不会自动为其初始化,因此,在其定义时,若无显式地赋予初值的话,其值是不确定的。 * static局部变量(静态局部变量) 【例子】例6.6.3 编一程序,观察比较自动局部变量与静态局部变量在调用过程中的情况。 程序1: #include stdio.h void fun() { int x=1; //每次调用时,都要重新初始化; x++; printf(x=%d\n,x); } void main() { int i; for(i=0;i3;i++) fun(); } 程序2: #include stdio.h void fun() { static int x=1; //仅初始化一次 x++; printf(x=%d\n,x); } void main() { int i; for(i=0;i3;i++) fun(); } 运行结果: x=2 x=2 x=2 运行结果: x=2 x=3 x=4 * register变量(寄存器变量) 【格式】在函数(或复合语句)内部定义 register 数据类型名 变量名表; 【说明】 关键字register要求C编译器把定义的变量的值存储在CPU的寄存器中,而不像普通变量那样存储在内存中。这样,对于register变量的操作速度可以远远快于存储在内存中的普通变量。 register只能用于局部变量和函数形参。对于循环次数较多的循环控制变量、循环体内反复使用的变量及形参等均可定义为寄存器变量。 * 6.6.5 全局变量的存储类型 全局变量是在所有函数的外部定义的变量,其缺省类别是extern,因为又称为“外部变量”。 全局变量的作用域为从变量的定义的位置开始,到本源文件结束为止(见例6.6.5)。 全局变量属于静态存储类,编译时将全局变量分配在静态存储区,其生存期是程序的整个运行期间,即在程序的整个运行期间,它都在内存的静态存储区中占据固定的存储单元。 全局变量的初值是在编译时赋给的(仅赋值一次),如果全局变量在定义时未赋初值,编译时会自动被初始化为0(字符型为’\0’)。 全局变量可以通过存储类型说明符extern来扩展其作用域,使它可以被程序中各个函数所引用。如果使用static关键字,则它只可以被定义它的文件中的各函数所引用。 * 6.6.5 全局变量的存储类型 如果全局变量不在文件开头定义,其有效范围只限于定义处到文件尾。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字extern对该变量引用性声明,以告诉编译器该变量在本文件的某处已经被定义。 例6.6.5 将全局变量的作用域扩展到单个源程序文件(作用域向上扩展示例)。 #includestdio.h extern int x,y; //外部变量x、y的声明,将x、y作用域向上扩

文档评论(0)

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

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

1亿VIP精品文档

相关文档