第六章--- C++ 局部变量、全局变量、同名变量的处理、使用作用域解析运算符访问全局变量

在C++中,变量的范围(scope)定义了变量可以被访问的代码区域。变量的范围主要分为局部变量和全局变量两种。

局部变量(Local Variables)

局部变量是在函数或代码块(由大括号{}包围的区域)内部声明的变量。特点:它们只在声明它们的函数或代码块内部可见,一旦退出该函数或代码块,这些变量就不再存在。

示例:

#include<iostream>
using namespace std;
void func() {
    int num = 1;  // 局部变量
    cout << num;  // 可以访问
}
int main() {
    // cout << num;  // 错误:num 在这个作用域中未定义
    func();
    return 0;
}

在这个例子中,num 是在 func() 函数内部声明的局部变量,它只能在 func() 函数内部被访问。

全局变量(Global Variables)

全局变量是在所有函数之外声明的变量。它们在整个程序的生命周期内都是可见的,并且可以在程序的任何地方被访问。

示例:

#include<iostream>
using namespace std;

int num = 5;  // 全局变量

void display() {
    cout << num << endl;  // 可以访问
}

int main() {
    display();  // 输出 5
    num = 10;
    display();  // 输出 10
    return 0;
}

在这个例子中,num 是一个全局变量,它可以在 display() 函数和 main() 函数中被访问和修改。

同名变量的处理

如果一个函数内部有一个与全局变量同名的局部变量,那么在该函数内部访问该变量名时,将优先访问局部变量。

示例:

#include<iostream>
using namespace std;

int num = 5;  // 全局变量
int main() {
    int num = 10;  // 局部变量
    cout << num << endl;  // 输出 10
    return 0;
}

在这个例子中,尽管 nam 被声明为全局变量,但在 main() 函数内部声明了一个同名的局部变量,因此在 main() 函数内部访问 num 时,将访问局部变量 num

使用作用域解析运算符访问全局变量

如果需要在存在同名局部变量的情况下访问全局变量,可以使用作用域解析运算符 ::

示例:

#include<iostream>
using namespace std;

int a = 0;  // 全局变量

int main() {
    int a = 10;  // 局部变量
    cout << ::a << endl;  // 使用作用域解析运算符访问全局变量
    cout << a << endl;  // 访问局部变量
    return 0;
}

在这个例子中,::a 用来明确指出要访问的是全局变量 a

总结来说,局部变量和全局变量的主要区别在于它们的可见性和生命周期。局部变量只在声明它们的函数或代码块内部可见,而全局变量在整个程序中都是可见的。当存在同名的局部和全局变量时,局部变量会覆盖全局变量的作用域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值