2.3.2 变量
1.变量的命名和标识符
在程序中可以改变其值的量称为变量。变量名是标识符。
我们刚介绍的符号常量名以及后面要介绍的函数名、数组名、结构体名和共用体名等都是标识符。标识符是由用户定义的,要符合下面的规定。
① 标识符是以字母或下划线开头,由字母、数字和下划线组成的字符序列。例如,area、sum、score、_rec、PI等都是合法的标识符。
② 标识符是区分大小写的。例如,SUM、sum、Sum是3个不同的标识符。
③ 不能使用C语言的关键字定义其他的标识符。例如,if、for、else、while等都是关键字,不能再作为其他的标识符使用。
④ 定义标识符时,尽量做到“见名知义”,以增加程序的可读性。例如,可以用area作为面积的标识符,用score作为成绩的标识符,等等。
⑤ 标识符的长度视具体运行环境而定。
2.变量的定义
变量是用于存储数据的,因此每个变量必须属于某种数据类型。而且,在程序中,使用变量之前必须先将其声明为属于某种数据类型。例如:
char c1,c2; /* 说明c1、c2为字符型变量 */ int sum,score; /* 说明sum、score为整型变量 */ long L; /* 说明L为长整型变量 */ float f1,f2; /* 说明f1、f2为单精度实型变量 */ double d1,d2; /* 说明d1、d2为双精度实型变量 */
由此可见,声明变量的形式为:
数据类型名 变量名列表
变量的类型被声明后,编译程序就为其分配相应类型的存储单元,可以在程序中给该变量赋相应类型允许的值,并决定了该变量所能够执行的操作。例如,在某程序中有了上面的定义之后,编译程序会为变量c1、c2各分配1个字节的存储单元,为变量sum、score、f1、f2各分配4个字节的存储单元。在程序中可以为变量c1、c2赋字符型的值,如'a'、'A';为变量sum、score赋整型的值,如100、-90。还决定了sum、score可以进行模运算(求余数),而f1、f2就不能进行模运算。
注意:C语言中没有字符串类型,处理该类型时要使用在后面介绍的指针或字符数组。
3.变量的初始化
变量在声明的同时可以给其赋值,称为变量的初始化。例如:
char c1='*',c2='a'; /* c1、c2为字符型变量,同时给c1、c2分别赋初值'*'、 'a'*/ int sum=340; /* sum为整型变量,同时给sum赋初值340 */ float f1=3.14,f2; /* f1、f2为实型变量,同时给f1赋初值3.14,但没有给 f2赋初值,也就是说f2没有被初始化 */
注意:初始化不是在编译阶段完成的,而是在程序运行时对相应变量赋初值的,相当于有一个赋值语句。例如:
int sum=340;
相当于:
int sum; /* 说明sum为整型变量 */ sum=340; /* 赋值语句,将30赋予sum */
如果任何时候都不希望改变某个变量的值,可以将该变量声明为“固定”变量,方法是在定义并初始化该变量时,为其声明加上保留字const。例如:
const int t=1000;
这样,程序中就不能改变t的值了,任何时候变量t的值都为1000。