- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中用户标识符作用域与存储类
C语言中用户标识符的作用域和存储类 局部变量、全局变量和存储分类 在C语言中用户标识符都有一个作用域,所谓的“作用域”是指程序中的某一部分,在这一部分中,该标识符是有定义的,可以被子C编译和连接程序所识别的. 局部变量、全局变量和存储分类 C语言中有两种类型的存储类别,一种是自动的,一种是静态的; 有四个与两种储储类型有关的说明符,分别是:auto(自动) register(寄存器) static(静态) extern(外部) a:在函数外部定义的变量,叫做全局变量(它是静态变量) b:在函数风部或复合语句内定义的叫做,局部就量(它可以静态灰,也可以动态类); 它的引用如下:arto int i,j; 也可以定成 int auto i,j; 动态存储区(堆栈) 静态存储区 程序代码 局部变量及其作用域和生存在周期 auto变量 当变量要内部定义时,如果没的指定类,则使用auto 每当进入函数体时,系统自动为auto变量分配存储单元,退出时自动释放存储单元,这些存储单元另作它用。如再次调用它时,重新分配存储单元,而且各函之间造成信息隔离,不同函数中使用了同保变量也不会相互影响,从而可避免因不慎赋值所导致的错误。 (2)register变量 寄存器变量也是自动类变量,它与auto类不同的是: 用register说明的变量建议编译程序将变量的值保留于CPU寄存器中,而不是像一般变量那样,占用内存单元。程序运行时,访问存于寄存器中数据比在内存中的数据要快得多。因此用助于提高程序运行速度。 说明: CPU中的寄存器是有限的,因此只能说明少量的寄存器变量。注:register变量只是对编译的一种建议,而不是强制性的。 由于register变量的值存于寄存器中,而不是内存中,不能对它进行地址运算。 寄存器中的变量应尽量靠近使用的地方,用完之后尽快释放,以提高寄存器的使用率。 静态存储类的局部变量 当函数体内部用static来说明时,可经称该变量为静态局部变量。它们的作用域与auto\register 一样,但却也不本质的区别 /*在整个运行过程中,静态局部变量的存储空间是永久的,即是退也程序下进入时,存储空间也是原来的存储单元。 静态 局部变量的初值在编译时赋予的,而不在程序执行时赋值。 全局变量及其作用域和生存周期 全局变量的作用域和生存周期 全局变量是在外部函数位置上定义的,它的作用域是从变量定义的位置开始的,到整个文件结束。 例: #include stdio.h int suml void fun(void); main() { sum=10; prntf(“**main(1)**:%d\n”,sum); fun(); printf(“** main(2)**:%d\n”,sum); } void fun(void) { int sum; sum=20; printf(“**fun**:%d\n”,sum); } 在同一编译单位内用extern说明符扩展全局变量的作用域 当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序:该变量是一经定义过的全局变量,已经分配了存储单元,不需再为它另外开辟空间,这时其作用域从extern说明处起,延伸到该函数末尾。 注意:全局变量的说明与全局变量和定义不同:变量的定义只能出现一次,在定义全局变量时,不可使用extern说明符,而对全局变量的说明,则可以多次出现在需在的地方,这时必需用extern进行说明 在不同编译单位内用extern说明符扩展全局变量的作用域 在实际应用中,一个C语言通常由许多个函数组成,可以放于不同源文件中,生成目标文件,最后生成可执行程序,而在不同的文件中,若每个文件中都定义相同的变量时,用extern进行说明,可以在不同的文件中使用相同的就量。 例:/*file1.c 文件*/ #incude stdio.h int x,y; void fun1(); void fun2(); void fun3(); main() { fun1(); fun2(); fun3(0); } void fun1() { x=111; . . . } /*file2.c 文件*/ #incude stdio.h extern int x; void fun2() { printf(“%d\n”,x);/输出结果为11
文档评论(0)