剖析:变量与常量

 生活中存在很多值。为了衡量和储存这些数值,就出现了变量和常量。

1.  常量

常量是一些无法改变的数值,比如物理学里面的重力加速度,永远不会改变。常量分为字面常量,标识符常量和枚举常量三种。

1.1  字面常量

字面常量是直接写出的固定值,他包含c语言中的可用数据类型,分为整型常量和字符常量。整型常量有1,2,3.3这些,字符常量为abc等。

1.2  标识符常量

#define是C语言的预处理指令,预处理也就是在编译之前进行的处理,在编译之前会进行替换。

在c语言中,define可以定义任意一个常量,比如

在这里程序会对我们输入的身高和体重两个参数进行预处理,相对我们在main函数里面再去定义这个数据来说更早实现这一步。

如果我们想描述一个人,在当前的状况(时间空间)下他的某些特征是不会改变的,那我们可以给他定义一些数值,如果后期需要修改只需要在define的时候修改数值。

1.3  枚举常量

生活中有很多数值是具有连续性的,比如一周有7天,从星期一到星期日,那我们可以用枚举的办法给他赋值,在这种情况下Monday的初始化数值为0,Tuesday为1,以此类推,到星期日为6.

注意:

  使用枚举常量的时候可以初始化,但是不能被修改,换而言之,则是只能将他们的数值赋给其他变量。

  不能用取地址操作符取得他们的地址。

  不能在程序中出现和枚举变量名字一样的变量。

2.  变量

变量来源与数学,是计算机语言中用来存储数值的抽象概念。变量在生活中无处不在,就比如一个人的体态特征,年龄等等因素随着时间的流逝就会变化。就像计算机中的时间戳一样,从1970年的1月1号开始,每一分每一秒都在改变。

如果我们引入一个变量,而没有给他初始化,就会出现程序出错的状况(变量所包含的数值是一个随机值)

2.1  局部变量和全局变量

全局变量和局部变量最大的区别在于作用域和生命空间。全局变量可以在整个程序中甚至跨程序使用,而局部变量只能在这个小片段里面使用,一旦该部分程序运行结束,则局部变量的生命周期结束。

2.2  static修饰全局变量

static的作用为修饰局部变量变成全局变量

static修饰局部变量改变了变量的生命周期,生命周期改变的本质是改变了变量的存储类型,本来局部变量存储在栈区,通过static修饰后存到静态区,则该变量的生命周期就和全局变量一样了。

3.  const修饰

3.1  const修饰变量为常量

变量是可以被改变的,如果我们想将变量变成一个可以定值(类似与常量),就可以引入const。

在这种情况下,a属于一个变量,在初始化后通过程序将他改变为100,如果加入const,就变成

程序显示a变量无法改变,则认为a是一种常变量。

3.2  常变量的修改

如果我们想要修改他的话,虽然有const的修饰,但是我们可以绕过a,去使用a的地址,就可以实现常变量的修改。

3.3  const修饰指针变量

#include<stdio.h>
void test1()
{
	int n = 1;
	int m = 2;
	int *p=&n;
	*p = 3;
	p = &m;
}
void test2()
{
	int n = 1;
	int m = 2;
	const int *p=&n;
	*p = 3;
	p = &m;
}
void test3()
{
	int n = 1;
	int m = 2;
	int const *p=&n;
	*p = 3;
	p = &m;
}
void test4()
{
	int n = 1;
	int m = 2;
	const int const *p=&n;
	*p = 3;
	p = &m;
}
int main()
{
	
	test1();
	
	test2();
	
	test3();
	
	test4();
	return 0; 
}

const修饰指针变量的时候,

如果const放在*左边,修饰的是指针指向的内容,保证指针变量的内容不能被改变,但是指针变量本来的内容可以改变,

如果const放在*右边,修饰的是指针本身,可以保证指针变量的内容不能修改,但是指针指向的内容可以通过指针改变。

 好了,文章到这边基本上介绍完了常量与变量,作者制作不易,希望能收获你的喜欢和关注 68ffdcfbee5143c49a83a0a878c54c78.png

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值