最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

static详解

工作和技术 crifan 1754浏览 0评论

static详解

static的作用】

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

存储方式

作用域

特殊说明

全局变量+static

未变

仍未静态存储

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

仅在当前文件有效

局部变量+static

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

变成了:

静态存储区

未变,仍是函数内

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

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

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

函数+static

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

变成了:

在内存中仅有一份拷贝

未变

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

static的渊源】

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

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

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

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

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

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

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

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

声明:上述内容,整理自网络各资料。

转载请注明:在路上 » static详解

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
79 queries in 0.163 seconds, using 22.13MB memory