C++变量作用域:
一般来说我们的变量会有全局、局部和形参的方式来定义:
1.局部变量:
在函数或一个代码块中声名的变量。
2.全局变量:
在所有函数外部声名的变量。
3.形参变量:
在函数参数的定义中声名的变量。
······························································································································
作用域使程序的一个区域,变量的作用域可以分为以下几种:
1.局部作用域:在函数内部声名的变量具有局部作用域,它们只能在函数内部访问。局部变量在每次程序块被调用的时候就会创建,在程序块执行完成之后就会被销毁。
2.全局作用域:在所有的函数和程序块之外声名的变量具有全局作用域,它可以被所有程序块或函数调用或访问。全局变量是在程序开始时被创建,在程序结束的时候被销毁。
3.块作用域:在代码块内部创建的变量具有块作用,他们只能在代码块内部的函数访问。块作用域变量在代码块每次被执行时被创建,在代码块执行完后被销毁。
4.类作用域:在类内部声明的变量具有类作用域,它们可以被类的所有成员函数访问。类作用域变量的生命周期与类的生命周期相同。
注意:如果在内部作用域中声名的变量与外部作用域声名的变量同名,那么内部作用域的变量将覆盖外部作用域的变量,也就是说在一个代码块或函数中局部变量的优先级比全局变量的优先级高。
———————————————————————————————————————————
局部变量:
所谓局部变量就是在一个代码块或函数中定义的一个变量,他的作用域只能在定义的这个代码块或函数中。来个代码试试!
#include<iostream>
using namespeace std;
int main(){
//先定义一下我们的局部变量
int a,b;
int c;
a =10;
b =20;
c =a+b;
cout << c <<endl;
return 0;
}
全局变量:
一般在程序最前面定义,全局变量可以被程序中所有的代码块或者函数调用。来个例子!!!
#include<iostream>
using namespace std;
//在这里定义全局变量
int g;
int main(){
int a , b;
a =10;
b =20;
g = a+b;
cout << g <<endl;
return 0;
}
上面说了作用域的优先级,来给大家一个栗子!!!
#include<iostream>
using namespace std;
//来个全局变量
int g = 10;
int main(){
int g;
g =30;
cout << g <<endl;
return 0;
}
输出的结果是:30。
块作用域:
算了,就不讲概念了,忘记的上去看去,直接上代码。
#includ<iostream>
using namespace std;
int main(){
int a = 10;
{
int a = 20;
cout << "这是块变量"<< a <<endl;
}
cout <<"这是外部变量" << a <<endl;
return 0;
}
运行结果就是:
块变量:20
外部变量:10
类作用域
不讲了原理直接上代码!想看原理的上面看去
#include<iostream>
using namespace std;
class MyClass{
public:
static int class_var;
};
//给MyClass类中的class_var赋值
int MyClass:class_var = 30;
int main(){
cout<<"类变量:"<<MyClass_var<<endl;
return 0;
}
我们在类中声名一个类变量的时候,我们可以使用"类名::变量名"来调用这个变量
好了 下课!