Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134982
  • 博文数量: 52
  • 博客积分: 85
  • 博客等级: 民兵
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-28 09:25
文章分类
文章存档

2013年(4)

2012年(48)

分类:

2012-03-06 11:41:19

原文地址:STATIC详解 作者:ligyf

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

存储方式

作用域

特殊说明

全局变量+static

未变

仍未静态存储

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

仅在当前文件有效

局部变量+static

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

变成了:

静态存储区

未变,仍是函数内

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

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

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

函数+static

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

变成了:

在内存中仅有一份拷贝

未变

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

static的渊源】

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

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

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

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

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

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

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

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

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