static用法总结

作者: saviochen | 来源:发表于2017-06-24 22:50 被阅读63次

1 C语言中

在C语言中,static有三个明显作用:

    1. 函数体内static变量,不会随函数结束而消亡。再次调用该函数时,该变量且不再初始化,其值为最后一次操作后的结果。
    1. 在模块内,如果一个变量被声明为static,则该模块所有函数皆可访问,但其作用域仅限于本文件中。
    1. 内部函数(静态函数)只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。

2 C++类内成员

2.1 静态数据成员

使用规则:

    1. 对于非静态成员,每个类都有自己的拷贝,而静态数据成员是类成员,存储在全局数据区,不论类有多少对象,都只有一份拷贝,即使无类实例,也可使用。
  • 2) 静态数据成员和普通成员一样遵从public、protected、private访问规则。

  • 3) static成员变量初始化在类外,此时不能带上static关键字。protected、private的static成员虽然在类外初始化,但在类外不能访问。

与全局变量相比,静态数据成员具有以下两点优势:

    1. 静态数据成员没有进入程序全局名字空间,因此不存在与程序其他全局名字冲突的可能性。
    1. 可实现信息隐藏。静态数据成员可以是private,而全局变量则不能。
2.2 静态成员函数

使用规则:

    1. 与静态数据成员相似,是类的一部分,为所有对象共享。
    1. 由于无this指针,所以不能访问类非静态数据成员和非静态成员函数。

3 为什么static变量只初始化一次?

实际上,对于所有对象,不仅仅是静态对象,初始化都只有一次。

静态对象存放在静态区,其生命周期较长,通常与整个源程序相同,初始化后一直保存在内存区域中,故不会再次初始化。auto变量存放在栈区,一旦调用过程结束,则被自动销毁。

4 在头文件中定义静态变量,是否可行?

不可行。如果在头文件中定义静态变量,使用了该头文件的每个C语言文件,按照编译规则都将单独存在一个静态变量,从而引起空间的浪费和程序错误。

所以不建议在头文件定义任何变量,包括静态变量。

相关文章

  • static用法总结

    1 C语言中 在C语言中,static有三个明显作用: 函数体内static变量,不会随函数结束而消亡。再次调用该...

  • C 语言关键字 static

    一 static 关键字简介 二 static 的用途大全 先总结一下 static 的用法,然后再对每一条进行说...

  • static 用法

    C++内存分配方式详解 http://www.cnblogs.com/daocaoren/archive/2011...

  • java关键词整理

    1.this用法总结 1)代表当前对象 2)区分同名变量 3)调用本类的其他构造方法 2.static...

  • PHP中的static关键字

    PHP和Java中都会有static这个关键字,用法也类似,当问及PHP中的static用法是,很容易想出stat...

  • static的用法

    static是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法: 1.用来修饰成员变量,将其变...

  • static的用法

    1、静态成员变量的特点。 static 【函数类型】【变量名】 static定义的变量属于类级别的变量,不是对象级...

  • Java Static 用法

    Java中的Static关键字用的很多,但是总结起来,大概有:Static member、Static Block...

  • static的用法

    (1)函数体内static变量的作用范围为该函数体,不同于auto变量,在编译期就会初始化,也就是说这个静态变量值...

  • Static的用法

    一, 修饰函数 static修饰函数时, 函数不能被外部文件访问extern修饰函数时, 函数可以被外部文件访问 ...

网友评论

    本文标题:static用法总结

    本文链接:https://www.haomeiwen.com/subject/sjxlcxtx.html