c语言中static用法大全

c语言中static用法大全

ID:8969332

大小:32.00 KB

页数:5页

时间:2018-04-13

c语言中static用法大全_第1页
c语言中static用法大全_第2页
c语言中static用法大全_第3页
c语言中static用法大全_第4页
c语言中static用法大全_第5页
资源描述:

《c语言中static用法大全》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一、c程序存储空间布局  C程序一直由下列部分组成:  1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;  2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。  3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。      4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信息)。  5)堆——动态存储分。是向高地址扩展的数据类型,是自下向上的扩展

2、方式。

3、-----------

4、

5、

6、

7、-----------

8、

9、栈

10、

11、-----------

12、

13、

14、

15、

16、

17、/

18、

19、

20、

21、

22、

23、/

24、

25、

26、

27、

28、

29、-----------

30、

31、堆

32、

33、-----------

34、

35、未初始化

36、

37、-----------

38、

39、初始化

40、

41、-----------

42、

43、正文段

44、

45、-----------

46、  二、面向过程程序设计中的static  1.全局静态变量  在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。  1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)

47、  2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)  3)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。  定义全局静态变量的好处:  <1>不会被其他文件所访问,修改  <2>其他文件中可以使用相同名字的变量,不会发生**。  2.局部静态变量  在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。  1)内存中的位置:静态存储区  2)初始化:未经初始化的全局静态变量会被程序自动初始

48、化为0(自动对象的值是任意的,除非他被显示初始化)  3)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。  注:当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。  当static用来修饰全局变量的时候,它就改变了全局变量的作用域(在声明他的文件之外是不可见的),但是没有改变它的存放位置,还是在静态存储区

49、中。  3.静态函数  在函数的返回类型前加上关键字static,函数就被定义成为静态函数。  函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。  定义静态函数的好处:  <1>其他文件中可以定义相同名字的函数,不会发生**  <2>静态函数不能被其他文件所用。 存储说明符auto,register,extern,static,对应两种存储期:自动存储期和静态存储期。  auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的

50、程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。  关键字extern和static用来说明具有静态存储期的变量和函数。用static声明的局部变量具有静态存储持续期(staticstorageduration),或静态范围(staticextent)。虽然他的值在函数调用之间保持有效,但是其名字的可视性仍限制在其局部域内。静态局部对象在程序执行到该对象的声明处时被首次初始化。  扩展分析:  术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在

51、的局部变量。随后,staticC中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义。最后,  C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数(与Java中此关键字的含义相同)。C语言程序可以看成由一系列外部对象构成,这些外部对象可能是变量或函数。而内部变量是指定义在函数内部的函数参数及变量。外部变量定义在函数之外,因此可以在许多函数中使用。由于C语言不允许在一

52、个函数中定义其它函数,因此函数本身只能是“外部的”。      由于C语言代码是以文件为单位来组织的,在一个源程序所有源文件中,一个外部变量或函数只能在某个文件中定义一次,而其它文件可以通过extern声明来访问它(定义外部变量或函数的源文件中也可以包含对该外部变量的extern声明)。      而static则可以限定变量或函数为静态存储。如果用static限定外部变量与函数,则可以将该对象的作用域限定为被编译源文件的剩余部分。通过st

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。