变量的作用域:
(1)变量的作用域是指变量的使用范围。
(2)根据变量的使用范围不同,C++中的变量被分为局部变量和全局变量。
- 局部变量
(1)在一个函数内或者复合语句内定义的变量称为局部变量(函数的形参也属于局部变量)。
(2)局部变量只允许在其定义的函数或复合语句中使用,离开所在的函数或复合语句后该局部变量将不能使用。
举个例子:
(1)主函数中定义的变量不能在其它函数中使用。
(2)复合语句(看看下面的复合语句)中定义的变量,也只能在该复合语句中使用。
(3)for语句中控制变量的作用域
在DEVC++中上述代码会报错。
总结:局部变量是在执行该函数或复合语句时自动建立,当该函数或复合语句执行完毕后将自动释放。所以在不同的函数或复合语句中定义同名的局部变量,也不会相互干扰。局部变量也称为自动类型变量。
2. 全局变量
(1)全局变量说明于所有函数之外,可以为所有函数共同使用。
(2)全局变量可以在各个函数之间建立数据的传输通道。
注意:在函数中局部变量优先于全局变量。
注意:在函数中,当局部变量与全局变量同名时,遵循“局部变量优先”的原则。这时,如果想使用全局变量,应在变量名前加上作用域运算符“::”即可。
使用全局变量的几点说明:
(1)全局变量的作用范围是从定义点到整个源程序的结束。在定义点之前,如果其它函数要引用全局变量,可以在该函数中用 extern 对全局变量进行声明。
我认为上述不严谨,extern后面应该加上全局变量的类型才能进行声明否则会报错。比如:
#include<iostream>
using namespace std;
int add(int a)
{
extern int b;
int c;
c=a+b;
return c;
}
int b=5;
int main()
{
int a=44;
cout<<add(a)<<endl;
return 0;
}
(2)使用全局变量,可以增加函数间的直接联系,减少函数定义时的参数。
(3)由于全局变量在整个程序运行时始终占用内存,这样,使用全局变量将降低程序的通用性、可靠性和移植性,这是全局变量的负面作用。