C++中的变量及作用域

动态资讯   2023-07-14 22:31   160   0  

变量:C++中的变量和数学中的变量类似,一般用一个字母或者一个单词来代表一个数

注意:C++中的变量必须先定义再使用

定义:“告诉”计算机,我们准备用一个什么名字的变量来存放一个什么类型的数;

eg:int x,表示我们准备使用变量x来存放一个整数。

#include<bits/stdc++.h>
using namespace std;
int main(){
	//定义一个变量(没有为变量赋值)
	int x,z;
	//为变量x赋值
	x=18;
	//定义同时赋值
	int y=36;
	cout<<x+y<<endl;
	cout<<z;
	return 0;
}

运行结果

54

【总结】:

1、在C++中变量定义后如果不赋值,那么它的值是随机的,因此变量定义后,在使用之前一定要赋值

(对于局部变量,c语言并没有规定它的默认初始值是什么,不同的编译器进行了不同的扩展,有的是0,有的是其他随机数)

2、在一个C++的main中,不能定义同名的变量。

int x;
x = 2;//为变量赋值为2
x = 3;//语法正确,重新为变量赋值
int x;//语法错误,变量x不能重复的定义

补充:在C中定义变量时,编译器将给该变量分配内存,但并不会将分配的内存初始化为0,这样,原来的内存区域保存的是什么值,新制定的变量也就具有了什么值----《程序员的数学思维修炼》

变量的作用域

1、变量的额作用域,指的是变量的有效范围

变量的作用范围是:变量定义时所在的最近的大括号内。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int x=10;
	if(x>=10){
		int y=x+1;
	}else{
		int y=x-1;
	}
	cout<<y;
	return 0;
}
//上述代码会报错:[Error] 'y' was not declared in this scope

for循环内定义的变量,只在for循环内有效

#include<bits/stdc++.h>
using namespace std;
int main(){
	for(int i=0;i<10;i++){
		cout<<i<<endl;
	}
	cout<<i<<endl;//编译会报错,i只在上个大括号内有效
	return 0;
}

2、局部变量和全局变量的差异

一般我们将变量定义在:函数内部,称为局部变量;函数外部,称为全局变量

区别:

A:初始化:局部变量定义后,初始值不会自动初始化,必须人工初始化,全局变量系统会自动赋初值

int :0、double :0 char:'\0'(空字符,对应的ascii是0)、bool:false

int 数组:0,double 数组:0;char数组:‘\0’,bool数组:false

B:全局变量的变量名不能和系统函数同名,例如:max,min……

C:全局变量的值所有函数共享,局部变量的值只能在该函数中使用 

D:在函数中,如果定义的局部变量和全局变量同名,局部变量会覆盖全局变量

#include<bits/stdc++.h>
using namespace std;
int a=10;
int main(){
	int a=0;
	cout<<a<<endl;//运行结果输出0
	return 0;
}

E:全局变量中,可以定义更大的数组

在函数内部定义数组,最大可以开1MB-2MB,大约是5*10^5个整数的大小

在函数外部定义数组,最大可以开到2G(约5*10^8个整数),注意解题一般给定的内存是256Mb(约6*10^7个整数)

建议在做题时,将变量定义为全局变量,以使得变量默认自动初始化,可以开更大的数组大小。