C++--变量作用域

发布时间 2023-10-25 11:09:49作者: Bonne_chance

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<<endl;
	return 0;
}

结果显示:

在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。
代码实例:

#include<iostream>
using namespace std;
int g = 20;//全局变量
int main(){
	//局部变量
	int g = 10;
	cout<<g<<endl;
	return 0;
}

结果显示:

初始化局部变量和全局变量

当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:

数据类型 初始化默认值
int 0
char '\0'
float 0
double 0
pointer NULL

正确初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果,例如报错,或者出现奇怪的值。