大家好又见面了,我们今天了解一下常量和变量以及相应的作用域,OK,不多说我们来开始吧!
--------------------分------------------------------------------界-------------------------------------------线-------------
今日目标:
1.了解变量和常量
2.什么是作用域
一.首先,什么是变量,什么又是常量呢?
像可以更改内存存储数据的就是变量
如图,这个a就是变量,10就是给a赋的初始值(也就是常说的初始化),
当然也可以直接定义a,不初始化(在不定义初始值的时候,a的内存中会存储随机值),所以我们更提倡在定义变量的时候给一个初始值。
什么又是常量呢?
在C语言中常量分为四种:
(1)字面常量
1.字面常量就是上图a=10中,10就是字面常量(也就是字面意思,你看的出来是个数,就是字面常量)
(2)const 所修饰的常变量
如图,被const所修饰的变量不可被更改了,所以这个a就具备了常属性
但是又为什么说它是变量呢
这里我们在拓展一下数组的概念:在定义数组的时候可在[ ]中用常量定义数组的大小;
所以如果说用const修饰就变成常量的话,arr数组就应该不会报错,但是这里的arr还是报错了,所以这里我们就说我们这个a既是常量又是变量(常变量)。
(3)#define定义的字符常量
这里我们用#define定义了一个A并赋给了一个5(可以理解为将工程中所有的字符“A”替换成数字“5”)
如图,数组arr并没有警告,printf可以打印A的数值
(4)枚举常量
由enum这个关键字创建的常量就是枚举常量(枚举的意思就是可以一一列举的量)
如图,这个“Week”就是枚举常量的名字,而大括号包括的值就是我们枚举常量的所列举的常量(星期一,星期二,星期三)
枚举常量也可以给其他枚举变量赋值
当在我们未给常量赋值时,编译器通常会给枚举常量赋一个初始值,这个初始值一般是从“0”开始
而当我们给其中一个常量赋一个初始值时,我们所赋值的常量后面的常量也会跟着改变,如图:
二.什么是作用域
作用域就是一个变量或者常量可以起到作用的范围可以分为:全局变量和局部变量
看,我们在内部的“{ }”中定义了一个局部变量a,但我们在外部的printf无法读取到a,所以这个'a'只作用在内部的大括号里无法出去,这个区域我们就叫做作用域
而这个'c'可以说不管在哪都可以读取到,所以我们就说这个'c'是全局变量作用在整个工程中。
而当局部变量和全局变量冲突时,局部变量要大于全局变量
如图:我们在main函数外面定义了一个c并赋上1000,我们在内部又定义了一个c并赋上一个10,当我们打印会发现输出的是10,所以我们就说局部变量要大于全局变量的。
-----------------分------------------------------------界-------------------------------------线--------------------------
OK,今天我们就先讲到这里了,后面的内容我还是会继续更新哒,如果有什么错误请一定要留言指出来。谢谢大家了!٩( 'ω' )و