3-初识常量变量

变量、常量

常量:

生活中很多数据不可变:血型、性别、圆周率

变量:

很多数据可变:工资、年龄、体重

C语言怎么描述:

常量-不可变的量
变量-可变的量
image.png

变量的分类

局部变量

{}内部定义的

全局变量

{}外部定义的
当局部变量和全局变量名字冲突时,局部优先
不建议把全局变量和局部变量的名字取成一样
image.png
image.png
报错了
scanf这个函数不安全,考虑使用scanf_s instead替换,如果不想看到这样的警告请使用_CRT_SECURE_NO_WARNINGS
将它放入代码的第一行,必须是第一行
image.png
然后再次运行就不会报错了
image.png
scanf_s函数 - VS编译器提供的,不是C语言标准规定的
如果要使用只能在VS编译器跑起来,别的平台会报BUG
image.png

变量的作用域和声明周期

作用域

作用域(scope),程序设计概念,通常来讲,一段程序代码中所用到的名字并不总是有效/有用
而限定这个名字的可用性的代码范围就是这个名字的作用域

通俗的讲,这个变量在哪可以使用,哪里就是它的作用域
1.局部变量的作用域是变量所在的局部范围
2.全局变量的作用域是整个工程
image.png
这里报错是因为,{}内的局部变量作用就是{}内,在作用域外不可用
image.png
移到作用域内成功运行
image.png
可以看到全局变量放在哪都可以运行,不管{}内还是{}外
执行性的语法,如printf需要放在{}内
image.png
新建一个源文件add.c,定义一个变量g_vals,再在原来的test_4_20打印这个变量,发现是报错的
因为没有声明变量
image.png
声明变量后成功打印
所以说,全局变量的作用域是整个工程(跨文件需要声明)

生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

1.局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束
2.全局变量的生命周期:整个程序的生命周期
image.png

常量

C语言中的常量和变量的定义的形式有所差异
C语言中的常量分为以下几种:

  - 字面常量
  - const修饰的常变量
  - #define定义的标识符常量
  - 枚举常量

const 关键字

您可以使用 const 前缀声明指定类型的常量,如下所示:
const type variable = value;
image.png
const 声明常量要在一个语句内完成
image.png

image.png
加上const 报错了
image.png
左值被const修饰,所以这个值无法修改,此时num就是常变量,具有常属性的变量
image.png

如何证明num是变量?
image.png
此时n是变量,但是定义数组n必须为常量,所以报错了
尝试添加const属性
image.png
依旧报错了,所以证明n在这里即使被const修饰后它依旧是变量
常变量依旧本质属性依旧是变量,只是具有不可被改变的常属性,在必须为常量的地方时依旧不可用

#define定义的标识符常量

image.png
定义一个标识符常量为MAX,赋值10000
#define在{}内定义也可以
标识符常量不能在代码内修改

枚举常量

枚举常量的定义
enum 枚举类型名{常量1,常量2,常量3,…};
例如定义一个星期的枚举常量:enum Week {Mon,Tue,Wed,…};
这就定义了一个新的数据类型:Week。
Week数据类型来源于int类型(默认)。
Week类型的数据只能有7种取值,它们是:SUNDAY,MONDAY,TUESDAY……SATURDAY。
其中SUNDAY = 0,MONDAY = 1……SATURDAY = 6。也就是说,第1个枚举值代表0,第2个枚举值代表1,这样依次递增1。
不过,也可以在定义时,直接指定某个或某些枚举值的数值。比如,对于中国人,可能对于用0表示星期日不是很好接受,不如用7来表示星期天。这样我们需要的个值就是 1,2,3,4,5,6,7。可以这样定义:
enum Week {MONDAY = 1,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY};
我们希望星期一仍然从1开始,枚举类型默认枚举值从0开始,所以我们直接指定MONDAY等于1,这样,TUESDAY就将等于2,直接到SUNDAY等于7。
枚举值,我们就称为枚举常量,因为它一经定义以后,就不可再改变,以下用法是错误的!
TUESDAY = 10; //错误!我们不能改变一个枚举值的数值。
用枚举常量来完成表达今天是星期三:
Week today = TUESDAY;

image.png
image.png
枚举常量不能修改,只能修改附初值
image.png
修改附初值后
枚举常量会从初值累加
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里捡到一只猫丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值