入门第6天.
昨天在学习过变量的生命周期与作用域后,今天再来继续学习一下常量的相关内容。
首先先来了解一下常量有哪些种类,再去一一解释。
一般来说,常量有这4种。
1.字面常量
2.const 修饰的常变量
3.# define 定义的标识符常量
4.枚举常量
首先,第一种字面常量。
字面常量,就是通过其表示就可以知道他的值与类型的常量。
比如数字20,20在这里就是一个字面常量,它的值是20,类型是整型。
再比如数字3.14,它的值是3.14,类型是浮点型。
还有字符常量和字符串常量。
非常容易理解,这也是最简单的一种常量。
第2种常量是const修饰的常变量。
举个例子。如图。
我先初始化变量a为10,再把20赋值给a,也就是改变了a的值。
这里的a是变量,可以被修改的,也是昨天所学的。
但如果我定义了a=10,却并不希望别人去修改它,那么这个时候就出现了常变量。也就是把变量限制死,使其不能被改变,也就成了常量。
但常变量的本质还是变量,只是它不能被修改。
达到这一目的我们要学习一个新的关键字:const
这个关键字放在变量前面,就可以使该变量不能被别人去改变。如图(上面是报错情况,底下是程序)
这个报错程序翻译一下意思就是:
无法赋值给变量'a'具有const限定类型“const int”a=20
注意:变量'a'声明常量在这里常量int a=10;
意思就是这个变量a已经限定了,已经是一个长变量int a=10,不能再去更改为a=20。
这也就是const的用法。
下面来证明一下const修饰的这个常变量本质是变量。
先创建这样一个数组:int arr[10]={0},意思是创建了一个数组,这个数组可以存放十个整型。
联系到刚刚所学,那我们是否可以把10赋值给一个变量,再把这个变量放进方括号中?
系统报错。报错的原因就是这个表达式里必须得含有常量,而尽管变量a被赋值为10,但他的本质还是不一样。
如果这个时候利用常变量的知识在前面加上一个const,是不是它就可以使用了呢?
结果还是报错。这就可以证明了,尽管有const修饰,但常变量的本质还是变量,整个表达式仍然缺少常量,所以仍会报错。
第3种类型,# define 定义的标识符常量。
来举个例子。
这里便通过# define将MAX这个标识符定义为常量。
然而,# define定义的也可以不是整数,如下图所示。
在这里,我将STR定义为xavze这个字符串,因此也可以将其打印出来。
(PS.打印字符串使用%s)
他其实和上面的const有一点点类似,都是限制为常量,后续无法再进行更改。
最后一种常量就是枚举常量。
举个例子,我们日常生活中有很多东西,其实都是可以靠枚举来把它表示出来的。
比如说三原色,也就是RGB,红绿蓝。
那我们怎么去枚举它呢?
来新学一点东西。enum,这是枚举的关键字,用它我们可以直接列举出全部可能的取值情况并表示出来。
而枚举类型定义的一般形式为:
enum 枚举名{ 枚举值表 };
在枚举值表中列出的所有的也称为枚举元素。
如下图中,Red,Green和Blue都是枚举元素,也叫枚举常量,所以他们是不可以赋值等再去进行更改的。
且枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…
ok,以上就是今天学习的全部内容。