标识符的作用域--程序级>文件级>类级>函数级>块级

本文详细介绍了程序中变量作用域的分类及其具体应用,包括程序级、文件级、类级、函数级和块级作用域,并通过实例展示了不同作用域的变量如何在不同文件和上下文中被引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用域的种类可分为五种,从大到小分别为:程序级>文件级>类级>函数级>块级
作用域      
标识符
举例注释
程序级外部变量,外部对象和外部函数

(外部函数一般指的是带extern限定符的函数,一般函数默认extern,之所以叫外部函数,是指该函数可以在文件外被其他文件的函数所调用)
******file1.cpp******

int a=0;    
void fn1(); 

void main (){
    //  to do
}


******file2.cpp******

void fn2(){
   a=1;                
   fn1();          
}
一个程序可以有多个文件,那么程序级的作用域可以被多个文件所引用

// a为外部变量,fn1为外部函数,作用域均为程序级











// a作用域为程序级,那么在该程序的 file2.cpp文件中可以被引用,fn1()同理也可以
文件级外部静态变量,外部静态对象和内部函数,宏

(内部函数即是静态函数,之所以叫内部函数,是指该函数只可以在该文件内被其它函数所调用)
******file1.cpp******
#define MAX(a,b) ((a)>(b))?a:b

int static a;
static void fn1();
void fn3();

void main (){
   // to do
}
static void fn1(){
  // to do
}
void fn3(){
    fn1();
}


******file2.cpp******

void fn2(){
   MAX(1,2);
   a=1;
   fn1();
   fn3();
}


// 宏定义的MAX(a,b)作用域为文件级


// a为外部静态变量,fn1()为内部函数(静态函数),作用域均为文件级

//fn3()为外部函数,作用域为程序级







//通过fn3调用fn1();







// MAX()的作用域为文件级,不可以在file2.cpp中被引用
// error:  a的作用域为文件级(file1.cpp),那么在文件file2.cpp中不可以被引用,同理fn1也不可以。
// 正确:fn3()作用域为程序级,可以再这里被引用,这时候通过fn3()调用了文件级的fn1()也是可以的。
类级类中私有成员******file1.cpp******

public class C1{
    private int a;
}

C1 c1= new C1();
c1.a=1;



// a为类C1私有成员,作用域仅仅限于类C1中,为类级



// a的作用域为类级,在这里不可以被引用
函数级形参,函数体内定义的某些自动类变量或对象,内部静态变量或内部静态对象,语句标号void fn(int x){
   int y;

}
// x的作用域开始
// y的作用于开始

// x,y的作用域结束
块级分程序,if语句,switch语句,循环语句中的自动类和内部静态变量或对象void fn(){
     if(int i=5){
         // to do
     }
     else{}
     cout << i <<endl;
}

void fn(int n){
    if(n>5){
        int i=n;
    }
    else{
        double i=n;
    }
}

void fn(){
    switch(int i=fn1()){
         case 1:
            cout<< i ;
         case 2:
           .....
    }
   cout << i<<endl;

}

// i的作用于开始


// i的作用域结束
// error: i的作用域仅限于if语句内。





//  int型 i 的作用域在此开始,到此结束


//  double型 i 的作用域在此开始,到此结束




// i的作用于开始





// i的作用域结束
// error: i的作用域仅限于switch语句内。 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值