从零开始的C语言生活_变量,常量,常变量。

常量-不能改变的量

变量-能改变的量

如果拿人来举例的话

常量即为人出生时就具有的数据,且不可改变

例如:生日,血型,性别等。

变量则为人出生后具有的量,且可以改变

例如:喜欢的人,年龄,工作等。

1变量

#include<stdio.h>

int main()
{
	int age = 20;
	return 0;
}

int为变量的类型,age为变量的名字(自己定义,没有特殊含义),20是赋值。

若没有初始值则赋0,不赋值也可以,但是不推荐。

int main()
{
	int age = 20;
	age = age+1;
	printf("%d\n", age);
	return 0;
}

试着改变age的值,运行。

变量age改变。

1.1变量分类

变量分为两种,局部变量全局变量

简单的区分

局部变量就是在大括号{}内部的变量

全局变量则是在大括号{}外部的变量

int a = 100;
int main()
{
	int a = 10;
	return 0;
}

当两个变量命名冲突时,局部变量优先。

1.1.1变量的作用域和生命周期

作用域(scope):声名的变量并不是一直可用的,而显示这个变量可用的范围,就称作这个变量的作用域。

简单来说就是这个变量在哪里起作用,哪里就是这个变量的作用域。

int main()
{
	int a = 10;
	printf("%d", a);
	return 0;
}

printf("%d", a);就是变量a的作用域。

局部变量的作用域:就是变量所在的局部范围。

如果出了变量的局部范围,例如:

int main()
{
	{
		int a = 10;
	}
	printf("%d", a);
	return 0;
}

出现的结果

因为出了局部变量a的作用域(a所在的大括号),所以运行失败。

 全局变量的作用域:整个工程。

创建一个全局变量b。

int b = 2023;
int main()
{
	printf("%d\n", b);
	{
		printf("%d\n", b);
	}
	return 0;
}

运行

可以看出都成功打印了。

不仅在同一个头文件中可以全局使用,即使在同一个项目中的不同头文件中也可以使用,但需要先用 extern 声明(简单来说就是告诉编译器去找这个变量)。

 在另一个头文件中使用

extern int b;
int main()
{
	printf("%d\n", b);
	{
		printf("%d\n", b);
	}
	return 0;
}

运行结果如下

变量的生命周期:变量被创建到销毁这个时间段。

局部变量的生命周期:进入局部范围生命开始,离开局部范围生命结束。

全局变量的生命周期:程序开始生命开始,到程序结束生命结束。

2常量

2.1常量的分类

常量分为四种:字面常量、const修饰的常变量、#define定义的常变量、枚举常量

字面常量:

const修饰的常变量(const的量就是常变量,具有常属性(不能被改变的属性)):通常来说声明一个变量,是可以更改他的数值的,例如:

int main()
{
	int num = 20;
	num = 30;
	printf("%d\n",num);
	return 0;
}

运行结果为30,证明num数值被改变。使用const

int main()
{
	const int num = 20;
	num = 30;
	printf("%d\n",num);
	return 0;
}

程序就会报错。

错误原因:

但是,常变量本身还是属于变量!打个比方

int main()
{
	const int a = 20;
	int arr1[10] = {0};//arr[]是数组,数组里面的必须是常量
	int arr2[a] = 10;
	printf("%d\n",arr2[a]);
	return 0;
}

这说明a理论上还是一个变量,只不过多一个常属性,可以理解为给苹果镀了一层金,但不能被叫成金属,因为本质上他还是苹果。

#define定义的常量:定义一个标识符来表示一个常量,被称为符号常量。

不能重新赋值,会报错。

枚举常量:可以一一列举的常量。

enum Sex
{
	MALE,
	FEMALE,
	SECRET
};

 enum是枚举常量的固定搭配,声明一个变量’性别‘,有三种情况男女保密(也许还有其他性别,但在本文中只取其中三种),一一列举出来。

程序报错,证明define定义的是常量,不可修改。但是可以赋初始值。例如:

enum Sex
{
	MALE=3,
	FEMALE,
	SECRET
};
int main()
{
	enum Sex s = MALE;

	printf("%d\n", MALE);
	printf("#d\n", FEMALE);
	printf("%d\n", SECRET);
	return 0;
}

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值