上一节讲到了不能改变的 “常量”,但是,有些时候我们更需要相对灵活的,可以随着条件改变的东西,于是,就有了一种叫变量的东西。
首先说明一点,程序运行的时候,无论是常量还是变量,甚至于程序的代码(当然,不是我们写出来的这些)都是在内存中的ps:这句话暂时能记住多少就记住多少吧
既然一个量是可以变化的,那么它肯定不能使一个确定的实体 ,一个不错的想法是 一个变量是一块空间,然后这个变量代表的是这个空间里面的东西。这样子变量就可以 “变化”起来了。就像学校门口的保安室,我进去的时候那块空间里的东西就是我(不要纠结我是不是东西的问题),李雷进去的时候那块空间里的东西就是李雷,一条狗进去了的话那块空间里的东西就是一条狗 所以,那块空间一直都叫“那块空间”,只不过里面的具体内容是可以变化的。这就是变量的大意。下面我们来看一个例子
void main(){
int a;
a = 3;
}
首先还是第一节的那段最简单的代码,然后这里加了两行。
日常敲黑板 : 这两行也都是用分号结尾的,就像人说完一句话要有个句号表示一句话说完了,程序里面也需要这么表示一下,只不过这里用的是分号(当然,程序里不时所有的地方都要用分号结尾的)。
首先来看添加的第一行的a,这个a就是这个变量的名字,也就相当于上文中的“那块空间”。
但是一块空间只有名字也是不够的,因为无法确定它的大小,以及它里面通常会放些什么,于是,在空间名前面加了一个用来确定这块叫a的空间通常放的东西的类型的 int,int 代表 整数类型,所以 int a;代表 我现在有一块空间,这块空间叫做a,这块空间通常会放int(整数类型,比如1,2,3 带小数点的比如1.1不行)类型的数据。上面我们提到了 变量是在内存里面对,所以 int a;的意思是 声明(就是告诉程序 有我这么个东西了)一个叫a的变量,这个变量是int(整数类型)型的,所以里面通常放的是整数。而这句话实际做的事情是 找计算机从内存中要了一块空间,然后把这块空间叫做a(这块空间的位置不确定,大小根据前面的类型来,不同的类型要到的空间的大小也不同)。
所以 声明一个变量的语法是 变量类型 变量名;
既然已经有了一个变量了,那么就可以让这个变量变起来了。于是 就有了下一句 a = 3;
其中 a 是刚刚那个变量(也就是那块空间的名字) 代表着那块空间中的内容 ‘='号 不是等于的意思,它的作用是把后面的值放到前面那个变量代表的空间中 所以,a=3;结束之后空间a 的内容就是3 了(当然,也可以把一个变量代表的值放到另一个变量里 比如)
void main(){
int a;
a = 3;
int b;
b = a;
}
这里就把a代表的值给了b 当然 a的值是不变的 也还是3
上面的例子变量类型是整数类型(int) 还有一些其它的变量类型 比如:
字符类型 char(一个英文字母或数字或符号 并用单引号包起来) 例:’a'
浮点数类型 float(带小数点的数字)例:3.14
双精度浮点型 double (比float表示的精度大小和精度更高一点的带小数点的数字) 例 3.1415926
字符串类型 string(一串字,可以由中文或其它的组成,不局限于字符,但是要用双引号包住) 例:“止水” ps:如果用cout输出字符串变量,需要在开头加上#include <string>
具体用法同上面的整数类型(int)的例子
当然,一种类型的空间确定了,那么,它的大小也就同时被确定了。上面提到的int,一般表示-2147483648~+2147483647之间的数字(当然不同编译器以及不同系统的范围可能不太一样) ,如果想表示的值超过了这个范围 那么得到的值可能也是错误的。类似的 double float 等也都有固定的空间大小(以后会提到)
顺路讲点其它东西
键盘输入 :和输出到控制台的类似,只是需要把cout变成cin 并且把<<的方向改变一下
例如
#include <iostream>
#include <string>
using namespace std;
void main(){
string a;
int b;
cin>>a>>b;
cout<<a<<endl<<b<<endl;
}
上面例子运行结果如下
注意:
正常的话运行这段程序,黑框框出来之后里面是没有字的。然后 用键盘输入第一行的各个变量的值(第一行是用键盘输入的,然后中间红色框框的地方是个空格)
有时间可以试试 输入一个名字,一个地名,一个月份,一个日期 然后 在控制台上输出 aa来自bb生日是c月d日
例:止水来自辽宁生日是6月20日