其他分享
首页 > 其他分享> > 各种类型变量的生存期和作用域

各种类型变量的生存期和作用域

作者:互联网

局部变量:

  {}内定义的

全局变量

  函数、类外定义的 

静态变量:

  生存期和程序一样长,存储在全局/静态存储区。

 

普通局部变量:

  定义在{}内的是局部变量,其存储在栈中,作用域在{}内,出了{}的范围会被自动释放掉,普通局部变量不初始化,默认值为随机数。

普通全局变量:

  定义在{}外的,其定义在全局/静态存储区,其生存期和程序的一样长。全局变量只定义一次,在本文件中定义,在其他文件中可以采用 extern + 定义变量的形式进行声明,然后进行调用。extern关键词的作用和用法:https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html

静态局部变量:

  用static修饰的局部变量,作用域仍在{}中,但是生存期变长,变为和程序的生存期一样长。

静态全局变量:

  用static修饰的全局变量,作用域本文件中,生存期和程序的一样长。

静态全局变量是否可以在不同的文件使用同一个名字定义?

  不可以。普通全局变量,在两个文件中使用了同一个名字进行定义,可以进行正常编译,但会出现链接错误,原因是有两个地方存在相同的变量,导致编译器无法识别应该使用哪一个。

静态局部变量是否可以在不同的文件使用同一名字定义?

  可以。静态全局变量,在编译的时候编译器会将其进行重命名,其他文件就不会使用这个文件的static变量了,这样就使得只在本文件中有效。如果是全局的话,就全局可见,共享同一块内存空间。

  参考:https://zhidao.baidu.com/question/572940072.html

  

标签:文件,定义,各种类型,作用域,局部变量,静态,生存期,全局变量
来源: https://www.cnblogs.com/HansanF/p/14363747.html