标识符的作用域,变量的存储类(自动类变量,外部类变量,静态类变量)函数的存储类(内部函数和外部函数)

标识符的作用域

标识符的作用域是指某种标识符的作用范围。在C++中出现的各种标识符,具有不同的作用域。

作用域规则

总体规则:标识符只能在说明它或定义它的范围内是可见的,而在该范围之外是不可见的。
解释:
标识符包含常量名,变量名,函数名,类名,对象名,语句标号,类型定义名,宏名等。所谓可见是指可以对所定义的标识符进行访问存取等操作。

作用域种类

按作用域的大小可以分为以下5种:
程序级>文件级>类级>函数级>块级
1.程序级的作用域最大,包括组成该程序的多个文件,属于程序级作用域的有外部对象或变量和外部函数,在定义它的整个程序中都是可见的;
2.属于文件级作用域的有内部函数和外部静态变量或对象。这种作用域的范围是在定义它的文件内,从定义时开始到文件结束。宏名作用范围也是文件级,从定义开始一直到文件结束(或者出现了undef取消定义);
3.类级作用域通常在类体内,类中私有成员作用范围在类体内,公有成员类体外也可见。类的对象的作用域要看其定义范围;
4函数级作用域是在该函数的函数体内,包含形参,函数体内定义的某些自动类变量或对象、内部静态类变量或对象及其语句标号。注意作用域不包含在函数体内的分程序中,或if语句和switch语句以及循环体中定义的变量或对象。
5块作用域包含那些定义在分程序中,或if语句和switch语句以及循环体中定义的变量或对象。作用范围仅在它的相应范围内。

关于重新定义标识符的作用域

一般在相同作用域内,变量和函数是不能重复定义的。在不同的作用域内,可以定义同名变量或函数。
重新定义的标识符作用域规定:在某个作用范围内,定义的标识符可以在该范围内的子范围中重新定义该标识符,这时原定义的标志符在子范围内是不可见的,但它仍然是存在的。当退出子范围后,它又是可见的。而在其子范围内,重新定义的标识符是可见的,一旦退出了该子范围,重新定义的标识符不可见。
例1:

#include <iostream>
using namespace std;
int main()
{
   
    int x(7), y(9), z(11);
    cout << "x=" << x << ",y=" << y << ",z=" << z << endl;
    {
   
        double z = 5.67;
    
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值