局部变量:
在函数内部或一个代码块内部声明的变量,称为局部变量。
注:
使用 { } 括起来的一段代码可称为代码块。
对局部变量的一些说明:
-
主函数无法使用其他函数中定义的局部变量。同理其他函数也无法使用主函数中的变量
-
不同的函数可使用同名的局部变量,它们互不干扰。
-
函数的形参也是局部变量。
-
局部变量只在函数调用时存在,一旦调用结束,局部变量就被销毁。
全局变量:
在所有函数外部定义的变量(通常是在程序的头部),称为全局变量。
注:
全局变量的有效范围从定义变量的位置开始到本源文件结束,在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。
对全局变量的一些说明:
- 全局变量可以被所有定义在全局变量之后的函数访问。
- 在同一个源文件中,如果全局变量和局部变量同名,则在局部变量的作用范围内,全局变量被屏蔽,即不起作用。
- 全局变量不宜过多,应限制使用,因为过多会使各个含有全局变量的函数在执行时可能改变其值,程序容易出错。而能修改全局变量的语句又很多,这使调试程序变得困难。
来看实例:
#include <iostream>
using namespace std;
int a = 10; //全局变量
void fn (int i) //局部变量
{
int j = 9; //局部变量
cout <<"函数作用后值为:"<< i + j << endl;
}
int main ()
{
int a = 1; //局部变量 (和全局变量同名)
cout<<"a的值为:"<< a <<endl; //局部变量的值会覆盖掉全局变量的值
fn(a); //调用函数
return 0;
}
结果为:
a的值为:1
函数作用后值为:10
关于全局变量和局部变量的初始化:
定义全局变量时如果不初始化,系统会自动为其初始化为下列值:
数据类型 | 初始化默认值 |
---|---|
int | 0 |
float | 0 |
double | 0 |
char | ' 0 ' |
pointer | null |
但定义局部变量时未初始化,系统不会对其初始化,其也会被随机分配一个值。
小结:
对于全局变量和局部变量,最好都手动正确初始化。
好了,全局变量和局部变量就复习到这,觉得文章写得还不错的朋友点个赞呗。