C++变量作用域全解析:局部变量与全局变量的区别与交互
作用域是程序中变量可见的区域。变量声明位置大致三类:
- 函数/代码块内部 → 局部变量
- 函数参数定义处 → 形式参数
- 所有函数外部 → 全局变量
函数与参数详见后续章节,本节聚焦局部与全局变量。
局部变量
声明于函数/块内,仅在该函数/块内可见。外部函数不可见。示例:
#include <iostream>
using namespace std;
int main() {
int a, b; // 局部声明
int c;
a = 10; b = 20;
c = a + b;
cout << c;
return 0;
}
全局变量
定义于所有函数之外(通常置于文件顶部)。生命周期贯穿程序始终。任何函数均可访问。示例:
#include <iostream>
using namespace std;
int g; // 全局声明
int main() {
int a, b; // 局部声明
a = 10; b = 20;
g = a + b;
cout << g;
return 0;
}
同名遮蔽规则
允许局部与全局同名,但函数内局部变量优先(遮蔽全局)。示例:
#include <iostream>
using namespace std;
int g = 20; // 全局g
int main() {
int g = 10; // 局部g遮蔽全局g
cout << g; // 输出10
return 0;
}
输出10,印证局部优先。
初始化差异
局部变量:系统不自动初始化,必须程序员显式赋值。
全局变量:系统自动初始化为默认值:
| 数据类型 | 默认初始值 |
|---|---|
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| pointer | NULL |
最佳实践:始终显式初始化变量,规避未定义行为导致的诡异Bug。
C语言
- 精通C#变量与基础数据类型:完整指南
- 理解 C# 变量作用域:类级、方法级与块级详解
- 掌握 C++ 变量、字面量与常量:核心概念与实战指南
- 掌握 C++ 运算符:六大类型全解析与实战示例
- C++ 注释最佳实践:编写可读、可维护代码的注释艺术
- C 语言变量、常量与字面量完全指南
- C 语言存储类完全解析:auto、extern、static、register
- C++ 变量与数据类型全解析:int、double、char、string、bool 详细指南
- C++ 指针精通:核心概念、代码示例与实战应用
- C 语言变量详解:类型、命名规则、定义声明与内存管理
- 理解Python全局、局部与非局部变量
- 理解 Java 变量类型:综合指南