【初识C语言(1)】变量和常量

  • 生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
  • 有些值是可变的(比如:年龄,体重,薪资)。
  • 不变的值,C语言中用常量的概念来表示,会改变的值C语言中用变量来表示。

1. 局部变量和全局变量

#include <stdio.h>

int b = 20;//全局变量

int main()
{

	int a = 10;//局部变量

	return 0;
}

局部变量

  • 大括号内部定义的变量称之为局部变量

全局变量

  • 大括号外部定义的变量称之为全局变量

局部与全局的优先级

  • 局部变量与全局变量可以使用同一个变量名。

  • 当全局变量和局部变量公用一个变量名时,局部变量优先被使用。

在这里插入图片描述

2. 变量的作用域和生命周期

变量的作用域

变量可以使用的范围称之为变量的作用域。

  • 局部变量的作用域是变量所在的局部范围(变量所在的大括号内部)。
  • 全局变量的作用域是整个工程。

在这里插入图片描述
在这里插入图片描述

变量的生命周期

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

  1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  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语言常量分类

  1. 字面常量
  2. const 修饰的常变量
  3. #define 定义的标识符常量
  4. 枚举常量

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;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值