对于初学C语言的人来,肯定会首先接触到变量与常量这两个概念,本篇文章将会对这两个知识进行讲解。
变量
一.变量的命名
1.变量的名称可以由字母,数字,下划线组成(不包括操作符);某些学校考试时可能会出现这样的代码:
这样是错误的变量定义方式;
2.不可以以数字开头;
3.不可以是C语言中规定的关键字。
关键字详细解析:http://t.csdn.cn/yWCnT
但在某些编译器中变量是可以被命名成关键字的。
二.变量的作用域和生命周期
1.作用域:可以简单理解为一对大括号{}里的部分,也叫代码块。
2.生命周期:指的是变量的创建到变量的销毁之间的一个时间段。
三.变量的分类
1.局部变量:只在变量所定义的作用域内有效,所有的局部变量是自动变量,即自动创建,自动消除,关键字为:auto,但这个在我们编写程序的时候通常省略;
局部变量的生命周期是变量所在的作用域;
2.全局变量:作用范围是整个工程。
全局变量的生命周期是整个程序。
全局变量若定义时未初始化,则编译器默认是0。
那出现下图这种情况是因为什么呢?
这是因为程序运行时是先从主函数进去,自上而下扫描,当执行到printf时,因为int a=10;在main函数的下方,编译器找不到,便会报错。要想解决这个问题,我们可以先在main函数上方声明再使用,如图:
我们平时在定义全局变量的时候,紧接着就初始化可以有效避免上述情况的发生。
在这里再介绍一个关键字:extern
它的作用是:引用外部符号
如下图所示:
常量
一.常量的分类
1.字面常量;
即下方100这种
2.const修饰的常变量;
我们都知道赋值语句左边必须是可修改的左值,一般地,如下图所示程序是没有问题的
但如果在int加一个const呢
很显然编译器会报错。这是因为const修饰后使变量a具有了常属性,但他本质上还是个变量,所以a叫const修饰的常变量。再来看看下面这张图
arr是一个数组,这里a必须要求是一个常量,虽然a有了常属性,但本质上仍是个变量,所以不能用在数组中。
3.#define定义的标识符常量;
需要注意的是3后不能加分号‘;’
4.枚举常量。
枚举关键字:enum
生活中,总有一些东西是能一一列举出来的,如性别,星期啊;
对于类似这类的,我们可以使用枚举常量,详情如下图所示:
本篇文章就到这儿啦,谢谢你的阅读。
如有错误,欢迎指出。