1、常量:在程序执行过程中值不会发生变化的量。
(1)分类:
1.整形常量:一个整形数。
2.实型常量:一个实型数。
3.字符常量:由单引号引起来的单个字符或转义字符。
特别注意:'\015'是字符常量,属于、ddd。'\018'不是,8不符合八进制规定。
4.字符串常量:由双引号引起来的一个或多个字符组成的序列(特殊:空串 "")。保存需要借助构造类型。
5.标识常量:#define。宏体完全替换宏名,但不进行语法校验,一改全改,占编译时间
#define PI 3.14 #define ADD (4+3) #define MAX(a,b) a>b?a:b
2、变量:用来保存一些特定的内容,并且在程序执行过程中随时会发生变化的量。
定义:[存储类型] 数据类型 标识符 = 值
TYPE NAME = VALUE;
1.标识符:由字母数字下划线组成且不能以数字开头的一个表示序列。写标识符尽量写到见名生义。
2.数据类型:基本数据类型或任意的构造类型。
存储类型:
1.auto:默认类型 自动分配和回收空间。
2.static:静态型 自动初始化为0值或空值,并且其变量的值具有继承性。 另外,常用来修饰变量或函数,对应全局变量副作用的第二点。
3.register:(建议型)寄存器类型 资源极少运算极快。register int i;只能定义局部变量,不能定义全局变量;大小有限制,只能定义大小32位的数据类型,如double就不可以。寄存器没有地址,所以一个寄存器类型的变量无法打印出地址查看或使用。
4.extern(说明型):不能改变被说明变量的值或类型。
值:要与分配的类型相匹配。
3、变量的生命周期和作用范围
1.全局变量和局部变量
全局变量:从定义开始到当前程序结束。
局部变量:从定义开始到块的作用域结束。
重点:内部变量永远都是屏蔽外部变量。
全局变量的副作用:
1.任何一个地方改变全局变量的值都会影响其它地方的使用。
2.在不同.C文件中定义同一变量名的全局变量,虽然作用域和生命周期都不相同但编译时出现重复定义错误。此时应加上static修饰。static修饰函数时,只允许在本.c中调用。
2.局部变量和局部变量
在同一语句块当中不允许重复定义同一变量名,会报错。
3.参考图片