- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 存储类别和作用域 主要内容 数据类型和存储类别 局部变量和全局变量 变量的存储类别 内部函数和外部函数 7.1 数据类型和存储类别 在C语言中,每一个变量都有两个属性:数据类型和存储类别。 已经在前面介绍了数据类型(如整型和字符型),数据类型实际上是反映了数据的操作属性。在程序中使用的每一个变量都必须定义,指定其数据类型,编译程序就是根据数据类型为变量分配一定长度的存储单元,规定其数值范围,并且还根据它检查变量所参与的运算是否合法(例如,进行求余运算的对象都必须是整型)。 变量的存储类别反映了存储位置、变量的生存期(存在性)和变量的作用域(可见性)3种属性。 7.1 数据类型和存储类别 变量的存储位置 程序中定义的任何一个变量,在编译时都分配存储空间。在计算机中用以存放变量值的地方有两个:一是内存,二是寄存器。内存的数据区分为两部分:静态存储区和动态存储区。寄存器实际上也是一种存储器,只不过其存取速度比普通的内存要快,通常用寄存器存放程序的中间数据,以提高程序执行效率。C语言中可以指定变量是存放在内存中还是寄存器中。 7.1 数据类型和存储类别 变量的生存期(存在性) C语言的变量按其值存在的时间可以分为两种:静态存储变量和动态存储变量。静态存储变量是在编译时就分配存储单元,程序执行开始后该变量就存在(存放在静态存储区),程序结束时被释放。也就是说,静态存储变量的生存期就是程序执行的整个过程,在该过程中占有固定的存储单元。 动态存储变量是在程序执行期间根据需要进行动态的分配存储空间(存放在动态存储区中)。例如,函数的形式参数和在函数体内定义的变量,只有在调用该函数时分配存储单元,当该函数执行结束时,释放存储单元。动态存储变量的生存期是程序执行周期的一部分,根据函数调用的需要,动态地分配和释放存储单元。 7.1 数据类型和存储类别 变量的作用域(可见性) 所谓变量的作用域是指变量在程序中有定义的范围,在这个范围内引用该变量是合法的。从变量的作用域角度来分,可以分为全局变量和局部变量。变量只有在其作用域才是可见的(即可以引用的),离开其作用域则不可见(即不能引用)。 7.2 局部变量和全局变量 局部变量 全局变量 7.2.1 局部变量 在函数内定义的变量(包括形式参数)是内部变量,也称局部变量。它的作用域局限于它所在的函数,也就是说,只能在函数内部使用,其他函数不能使用。在main函数中定义的变量也只在main函数中有效,在其他函数中也是无效的。main函数也不能使用其他函数中定义的变量。 7.2.1 局部变量 例: float f1(int a) /*函数 f1*/ {int b,c; … a、b、c有效 } char f2(int x, int y) /*函数 f2*/ {int i,j; … x、y、i、j有效 } main() {int m,n; /*主函数*/ … m、n有效 } 7.2.1 局部变量 说明: 主函数main中定义的变量(m、n)也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。 不同函数中可以使用相同名字的变量,而且类型也可以不一样,它们代表不同的对象,互不干扰。例如,在f1函数中定义了变量b和c,倘若在f2函数中也定义变量b和c,它们在内存中占不同的单元,互不混淆。 形式参数也是局部变量。例如,f1函数中的形参a,也只在f1函数中有效。其他函数不能调用。 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也可称为“分程序”或“程序块”。 7.2.2 全局变量 一个C程序可以由一个或多个源程序文件组成,一个源文件可以包含一个或多个函数,在函数外部定义的变量称为外部变量。外部变量是全局变量,可以被多个函数所共用,其作用域为从变量的定义点开始到本源文件的末尾。 7.2.2 全局变量 【例】外部变量与局部变量同名。 int a=3,b=5; /*a、b为外部变量*/ max(int a,int b) /* a、b为局部变量*/ {int c; c=ab?a:b; return(c); } main() {int a=8; /*a为局部变量*/ printf(%d,max(a,b)); } 运行结果为 8 7.2.2 全局变量 【例】外部变量定义点之前对外部变量的引用。 int f1(int x,int y) {extern int c; c=x+y; return(x-y); } main() {int x1,x
文档评论(0)