全局变量与局部变量(c++)

变量可以在文件作用域或者块作用域中声明,在文件作用域中声明的变量称为全局变量,在块作用域中声明的变量称为局部变量。

1.局部变量

一般来说,在一个函数内部声明的变量为局部变量,其作用域只在本函数范围内。也就是说,局部变量只能在定义它的函数体内部使用,而不能在其它函数内使用这个变量。

说明:

  • 在不同的函数中可声明具有相同变量名的局部变量;
  • 形参也是局部变量,其作用域在定义它的函数内。所以形参和该函数体内的变量是不能重名的。

2.全局变量

在文件作用域中声明的变量称为全局变量,全局变量在声明后可以被很多函数使用。

说明:

  • 全局变量的作用域是从声明该变量的位置开始直到程序结束处;
  • 如果想在声明全局变量的前面使用该变量,而不需要重新声明,就必需使用extern关键字对其加以说明。

3.生命期

程序中的各种变量都有一个在需要时被创建,而在不需要时被删除的过程。在创建和删除之间所经过的时间称为生命期

1.局部变量的存储方式
(1)自动存储方式
局部变量,如不进行专门说明(专门说明为静态变量),都存放在堆栈区。对这些变量存储空间的分配和回收是由系统自动完成的,所以也叫自动变量。自动变量也可用关键字auto进行说明。

(2)静态存储方式

局部变量用关键字static进行说明后,成为静态局部变量。静态局部变量属于静态存储类型,被分配在静态存储区,即使在函数调用结束后,其所占内存空间也不被释放,静态变量仍然保存它的值。

2.全局变量的存储方式

全局变量采用静态存储方式,放在程序的静态存储区。根据某个文件中的全局变量是否能被其它源文件使用,又将全局变量分为外部的和内部的。

(1)未加特别说明的全局变量是外部的,能被其它文件中的函数使用。而在引用它的文件中,需要用关键字extern说明。
(2)用关键字static声明的全局变量是内部的,其作用域为本文件,其他文件不能使用该变量。

猜你喜欢

转载自blog.csdn.net/Yangye_1018/article/details/107755411