【入门级-C++程序设计:9、函数与递归-常量与变量的作用范围】
一、局部变量与全局变量
局部变量:
在一个函数内部定义的变量只能在本函数范围内有效,在该函数外不能使用的变量。
全局变量:
在函数外部定义的,可以被其它函数所引用的变量。
对全局变量的几点说明:
1、增加了函数间数据联系的渠道。
2、全局变量一般第一个字母用大写,以此区分一般变量。
3、一个源程序中如果全局变量与局部变量同名,则全局变量被“屏蔽”。
4、建议不必要时不使用全局变量。
①全局变量在程序的全部执行过程中都占存储单元.
②使函数的可靠性和通用性降低.
③降低程序的清晰性.
二、作用范围
常量和变量的作用范围(作用域)决定了它们在程序中的可见性和生命周期。作用范围主要分为以下几种:
1、局部作用域(块作用域)
定义:在函数、循环或代码块 {} 内部声明。
生命周期:从声明处开始,到块结束销毁。
可见性:仅在声明它的代码块内有效。
示例:
void func() {
int x = 10; // 局部变量
const int y = 20; // 局部常量
cout << x << y; // x 和 y有效结束位置
}
// x 和 y 在此处不可见
2、全局作用域
定义:在所有函数和代码块之外声明。
生命周期:程序启动时创建,程序结束时销毁。
可见性:从声明处到文件末尾(需注意跨文件使用需用 extern)。
示例:
const int MAX = 100; // 全局常量
int count = 0; // 全局变量
void foo() {
cout << MAX; // 可访问全局常量/变量
}
3、命名空间作用域
定义:在命名空间 namespace 内声明。
访问:通过命名空间限定符 :: 访问。
示例:
namespace MyNS {
const int VALUE = 42;
int num = 10;
}
cout << MyNS::VALUE; // 通过命名空间访问
4、类作用域
定义:在类 class 或 struct 内部声明。
访问:通过对象实例或类名(静态成员)访问。
示例:
class MyClass {
public:
static const int SIZE = 100; // 静态常量(类作用域)
int value; // 成员变量(对象作用域)
};
cout << MyClass::SIZE; // 直接通过类名访问
5、文件作用域(静态全局)
定义:用 static 修饰的全局变量/常量,仅在当前文件可见。
用途:避免跨文件命名冲突。
示例:
static int localToFile = 50; // 仅本文件可见
static const int LIMIT = 200; // 仅本文件可见
变量作用域详细说明:
更多推荐

所有评论(0)