变量: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
0
【总结】:
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个整数)
建议在做题时,将变量定义为全局变量,以使得变量默认自动初始化,可以开更大的数组大小。