Chinaunix首页 | 论坛 | 博客
  • 博客访问: 252742
  • 博文数量: 57
  • 博客积分: 2407
  • 博客等级: 大尉
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-07 15:41
文章存档

2021年(1)

2016年(1)

2014年(3)

2012年(10)

2011年(35)

2010年(1)

2009年(3)

2008年(3)

分类: C/C++

2009-09-05 21:45:07

static修饰之后的变量和函数与之前的比较

存储方式

作用域

特殊说明

全局变量+static

未变

仍未静态存储

变了,由在多个文件的全局有效,变成了:

仅在当前文件有效

局部变量+static

变了,由函数被调用时候在栈上分配且函数调用结束,返回时,被销毁

变成了:

静态存储区

未变,仍是函数内

1.静态局部变量也像其他静态变量一样,仅被初始化一次,下一次调用该函数,而使用该变量时,其值以上一次为准。简单说就是:

仅被初始化一次,下一次值依据上一次结果。

2.正常情况,函数内的局部变量,在函数返回时,被销毁,所以不能返回局部变量的指针,但是由于声明为static后,此局部变量生命期为整个程序运行期,所以,可以返回局部静态变量的指针。

函数+static

变了,由每次调用就重新有一份拷贝

变成了:

在内存中仅有一份拷贝

未变

其实static对函数的影响,类似于static对局部变量的影响,主要是对存储方式变了,即存储区域变了,由每次调用新申请,变成常驻内存静态区了。

static的渊源】

术语static最开始是在C语言中意为:

退出一个快后,仍然存在的局部变量,

后来static又在C中有了第二个含义:

表示不能用来被其他文件访问的全局变量和函数

为了避免引入新的关键字,所以仍用static表示第二种含义。

最后,C++重用了这个关键字,并赋予其第三种含义:

属于一个类,但不是属于此类的任何特定对象的变量和函数

(与Java中此关键字的含义相同)

阅读(2066) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~