变量和函数与静态动态局部和全局.docxVIP

  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文档。上传文档
查看更多
变量和函数与静态动态局部和全局

计算机C语言核心知识点-变量和函数 变量可以在程序中三个地方进行说明: 函数内部、函数的参数定义中或所有的函数外部。根据所定义位置的不同, 变量可分为局部变量、形式参数和全局变量。从空间角度来看,变量可以分为全局变量和局部变量,而从时间角度来分的 可以有静态存储变量和动态存储变量之分。一.全局变量和局部变量C语言中广泛使用局部变量来进行相关的存储的运算。在一个函数模块中定义的变量成为局部变量,我们一般在进入函数的地方进行局部变量的定义,局部变量在定义的时候需要被赋予初始值,否则会是系统被分配的随机值。局部变量的作用范围在函数体内部,每次进行函数的调用的时候,则进行局部变量的定义和分配内存单元。也就是说随着被调用函数体的结束,局部变量会自动消失,内存空间会释放。所以我们可以再不同的函数模块中去定义相同的局部变量。他们之间互相不会影响,在执行完某个函数的时候,会释放相应的存储单元,其他的函数单元也能进行重新定义和开辟存储空间。我们如果要使用函数体内部生成的布局变量的话,一般是通过静态变量来实现。局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内部,离开该函数后再使用这种变量是非法的。局部变量从存储方式上可分为动态(auto)存储类型和静态(static)存储类型。动态存储类型的局部变量都是动态的分配存储空间,数据存储在动态存储区(栈)中。函数调用结束后自动释放,生存期是在声明该变量的函数执行过程。静态存储类型的局部变量则是静态的分配存储空间,数据存储在静态存储区中。在程序整个运行期间都不释放,生存期贯穿于程序运行的整个过程。函数中的局部变量,如不专门声明为static存储类别,默认都是动态地分配存储空间的,我们在平时的声明变量的过程中auto都是默认省略的。C语言中也会广泛使用全局变量来进行运算。全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。全局变量的特点如下:在程序执行整个过程中它们占据固定的存储单元,而不动态地进行分配和释放;如果外部变量不在文件的开头定义,其有效作用域只限于定义处到文件终。也就是说文件中,在全局变量定义之前的地方需要使用全局变量,要使用extern这个关键词进行引用才能使用,通常我们把全局变量定义在文件的开头的地方,作用的范围是整个文件。全局变量定义了之后如果不赋给初始值的话,系统会自动给全局变量赋给初始值0。如果是字符型,则会被默认赋值’\0’。全局变量的分配存储空间在开始执行的时候,结束是在结束的时候,整个过程中一直占用存储空间,最后结束的时候,会进行资源的释放。全局变量定义在文件的开头的时候,作用范围为定义处到文件结束的地方。现在的大型工程一般使用由多个文件构成,那么在其他文件中需要使用的时候,要用extern进行声明才能够使用。程序设计的规则是高内聚性和低耦合性,无疑全局变量使得程序之间的耦合性增强,所以要少用全局变量。同时全局变量增加了系统的内存的开销。全局变量可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。定义全局变量时,理想的位置是在文件的开头,当这些函数以及同一个程序中的其他源程序文件中的某些函数需要使用该全局变量时,我们在函数内部对该变量使用extern 加以说明,说明他是外部的。这样程序设计比较的清晰。在全部变量的作用范围内的函数直接引用全局变量。在其他的源文件中,则需要进行全局变量的extern的声明。在程序中,局部变量可以和全局变量同名。如果要使用全局变量,需要使用“::”。局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。二.静态存储变量和动态存储变量这里分为static全局变量和普通的全局变量,static局部变量和普通局部变量,他们之间的区别如下:全局变量的说明之前冠以static,就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态

文档评论(0)

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

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

1亿VIP精品文档

相关文档