【C++】静态持续变量?如何创建静态持续变量?

举报
王博Kings 发表于 2020/12/30 01:42:36 2020/12/30
【摘要】 1. C++为静态存储持续性变量提供了3中链接性: 外部链接性(可在其他文件中访问)内部链接性(只能在当前文件中访问)无链接性(只能在当前函数或代码块中访问) 由于静态变量的数量在程序运行期间是不变的,因此程序不需要使用特殊的装置(如栈)来管理它们 编译器将分配固定的内存块来存储所有的静态变量,这些变量在整个程序执行期间一直存在如果没有显式地初始化静态变量...

1. C++为静态存储持续性变量提供了3中链接性:

  • 外部链接性(可在其他文件中访问)
  • 内部链接性(只能在当前文件中访问)
  • 无链接性(只能在当前函数或代码块中访问)

由于静态变量的数量在程序运行期间是不变的,因此程序不需要使用特殊的装置(如栈)来管理它们

  1. 编译器将分配固定的内存块来存储所有的静态变量,这些变量在整个程序执行期间一直存在
  2. 如果没有显式地初始化静态变量,编译器将把它设置为0。
  3. 在默认情况下,静态数组和结构将每个元素或成员地所有位都设置为0。

2. 如何创建这3中静态持续变量?

  • 要想创建链接性为外部的静态持续变量,必须在代码块的外面声明它; 
  • 要想创建链接性为内部的静态持续变量,必须在代码块的外面声明它,并且使用static限定符; 
  • 要想创建链接性为外部的静态持续变量,必须在代码块内声明它,并且使用static限定符;

3. 程序举例: 


  
  1. int global = 1000;
  2. static int one_file = 50;
  3. int main() {
  4. ...
  5. }
  6. void funct1(int n) {
  7. static int count = 0;
  8. int llama = 0;
  9. ...
  10. }
  11. void funct2(int q) {
  12. ...
  13. }

程序解读

global、one_file与count为静态持续变量,在整个程序执行期间都存在。 

在funct1()中定义的count的作用域为局部,没有链接性,这意味着只能在funct1()函数中使用它,就像自动变量llama一样。

然而,与llama不同的是,即使在funct1()函数没有被执行时,count也留在内存中。 

global和one_file的作用域都为整个文件,即在从声明位置到文件结尾的范围内都可以被使用。

由于one_file的链接性为内部,因此只能在包含上述代码的文件中使用它;

由于global的链接性为外部,因此可以在程序的其他文件中使用它。 

所有的静态持续变量都又下述初始化特征:未被初始化的静态变量的所有位都不被设置为0。这种变量被称为零初始化的。

4. 5种变量存储方式:

9.2.3

文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。

原文链接:kings.blog.csdn.net/article/details/96155598

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。