文章目录
- 1. 局部变量和全局变量
- 2. 变量的作用域和生命周期
- 3. 常量
- 生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
- 有些值是可变的(比如:年龄,体重,薪资)。
- 不变的值,C语言中用常量的概念来表示,会改变的值C语言中用变量来表示。
1. 局部变量和全局变量
#include <stdio.h>
int b = 20;//全局变量
int main()
{
int a = 10;//局部变量
return 0;
}
局部变量
- 在大括号内部定义的变量称之为局部变量。
全局变量
- 在大括号外部定义的变量称之为全局变量。
局部与全局的优先级
-
局部变量与全局变量可以使用同一个变量名。
-
当全局变量和局部变量公用一个变量名时,局部变量优先被使用。
2. 变量的作用域和生命周期
变量的作用域
变量可以使用的范围称之为变量的作用域。
- 局部变量的作用域是变量所在的局部范围(变量所在的大括号内部)。
- 全局变量的作用域是整个工程。
变量的生命周期
变量的生命周期是指变量的创建爱到变量的销毁的一个时间段。
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期。
- 在整个程序还存在时,全局变量都可以被使用。
#include <stdio.h>
int main()
{
{//进入这个大括号时变量a生命周期开始,变量a可以使用
int a = 10;
printf("a = %d\n", a);
}//出去这个大括号时a生命周期结束,变量a无法使用
printf("a = %d\n", a);
return 0;
}
作用域与生命周期的区分
- 作用域约等于生命周期,但两者不是一个概念;
- 变量的作用域决定了变量的生命周期;
- 作用域属于空间概念,为变量可以使用的范围。生命周期属于时间概念,为某变量生效以及结束的时间。
3. 常量
固定不变的值,C语言中通常用常量来表示。
C语言常量分类
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量
1. 字面常量
- 直接写出的数字就是字面常量;
- 写一个1出来他就是固定的数字1,不能被改变。
- 用单引号引起的的字符属于字符常量;
- 用双引号引起的字符串称为字符串常量。
//字面常量:直观的用肉眼就能知道这些是什么东西
#include <stdio.h>
int main()
{
30;//数字常量
'w';//字符常量
"abc";//字符串常量
return 0;
}
2. const 修饰的常变量
- 一般情况下,普通的变量被赋予一个值之后,该变量还是能够被修改的;
- 假设希望某个变量就是一个固定的值,不允许别人去动它,这个时候就要用 const 将该变量限制起来即可。
- 在 C 语言中,被 const 修饰的变量本质上是个变量,但是不能直接被修改,有着常量的属性。
3. #define 定义的标识符常量
- 通常将一个标识符固定为一个值,之后一旦出现该标识符时,自动将该标识符替换为固定的某个值。
- 通常情况下,#define 定义的标识符都采用大写与变量来进行区分。
- #define 定义的标识符常量的值是无法被修改的。
4. 枚举常量
枚举关键字 枚举类型名
{
枚举成员1,
枚举成员2,
枚举成员3
};
-
使用 enum(枚举关键字),可以创建一个新类型并指定它可以具有的值(实际上,enum常量是Int类型,因此,只要能使用int类型的地方,就可以使用枚举类型)。
-
枚举顾名思义就是一 一列举,把某些事物的可能取值一 一列举出来。
enum Day//命名为星期的枚举类型
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
enum Sex//性别
{
MALE,
FEMALE,
SECRET
};
enum Color//颜色
{
RED,
GREEN,
BLUE
};
- 定义类枚举类型之后,就可以使用枚举类型来创建一个枚举类型变量。
- c 是一个关于颜色类型的变量,以后给 c 赋值的时候,只能赋红绿蓝这三者之一。这些可能取值都是有值的,默认从0开始,依次递增1。
- 在定义的时候,也是可以给枚举成员赋初始值的;
- 当某些时候需要用到大量相同类型的常量的数据的时候,既可以用 #define 来定义也可以用枚举常来来定义。
- 例:菜市场蔬菜的价格属于相同类型的数据,如果用 #define 就要写一堆的 #define 那叫一个又臭又长,此时enum看着就很舒服了。
#include <stdio.h>
//用#define 来定义这种那是相当的麻烦
#define CABBAGE 3
#define TOMATO 5
#define CARROT 4
#define POTATO 2
//.....
enum vegetable //命名为蔬菜的枚举类型
{
CABBAG = 3,
TOMATO = 5,
CARROT = 4,
POTATO = 2
};
int main()
{
return 0;
}