在C语言中,可以使用的数据分为两类:常量和变量。
常量顾名思义就是固定不变的量,在系统编译时已经确定的,常用关键字const来创建,并且在创建常量必须设置它的初始值。常量的类型只能为下列类型之一:sbyte,byte,short,ushort,int,unit,long,ulong,cahr,float,decimal,double,bool,string等。
const int PI=23; //正确的声明方法
const int CI; //错误,定义常量时没有初始化
1.含义:
变量是指用来存储特定类型的数据,可以根据需求随时改变变量中所存储的数据值。人类用大脑或纸来记录数据,而计算机则是用内存:在内存中开辟一部分空间,把数据化成二进制存放进去,这部分存储数据的空间便是变量,即变量是内存中的一段存储区域。至于为什么叫变量,是因为这一段存储空间所存的数据可以改变。比如下面的代码。
int a; //定义变量a,a的值不确定
a=2; //执行后,a的值为2
a=3; //执行后,a的值为3
变量a刚分配空间时,其内容是不确定的,执行”a=2;“ 后,a中的值变成2;执行”a=3;” 后,其值变为3.其变化过程如图所示。
图中蓝色的两个字节是系统分配给a用来存整数的,因为其中所存的数可以改变,所以把这两个字节称为变量a。
说明:几乎所有微机的CPU在存放数据时都采用小端模式,即先存放低字节,再存放高字节。
2.变量的类型:
其中unsigned是无符号的意思,C语言中有些数据不可能是负数,没有必要用到最高位表示正负,故unsigned类型的数据,其最高位不再表示负号,而是跟后面的位一样代表大小。
存储地址的变量称为指针变量。
指针变量在内存中所分配的字节数一般与int类型变量相同,C语言中可以用运算符sizeof()求得某种类型或某项数据在内存中占用多少字节。
char c;
float x;
printf("%d,%d",sizeof(c),sizeof(char)); //输出1,1
printf("%d,%d",sizeof(float),sizeof(x)); //输出4,4
3.变量的定义
指针变量的定义和普通变量定义格式类似,区别是:指针变量名字前面要多写一个 *,例如:
char *p; //定义了一个指针变量p,用来存char型变量的地址
int *p1,*p2; //定义了两个指针变量p1,p2,都用来存int型变量的地址
float x,*p3,y,*p4; //定义了两个普通变量x,y和两个指针变量p3,p4
变量必须先定义,才能使用。
定义变量的目的:
一是给变量起个名字,以便在程序中分辨它;二是把变量的类型告诉计算机,以便让计算机给变量分配空间。因为有了类型,计算机才能知道该给变量分配多少字节,才能知道变量的值用什么方式存储。例如:若是字符变量则分配1字节,变量的值用ASCII(也叫ASCALL码);若是短整型变量则分配2字节,用补码存储........
4.变量的命名
不管是变量,还是今后要学到的数组,函数和结构体等,每一样东西都应该有一个名字作为标识,其名字即为标识符。
C语言对标识符有如下要求:
<1>标识符只能由英文字母,数字和下划线组成,但不能以数字开头。
<2>C语言是区分大小写的,即大小写被认为是两个不同的字符。因此name和Name是两个不同的标识符。
<3>不允许用关键字作为标识符。关键字是指已经赋予一定含义的字符序列,如int ,float,for ,if ,return 等
<4>标识符有长度限制,超过限制时,后面的字符不起作用。长度建议不要超过32个字符
5.变量的属性
每个变量都有值和地址两个属性。
变量的值指的是变量在内存中所存的内容。变量的地址指的是变量在内存中所处的位置,其起始地址称为变量的地址。
设有代码“short a=5;”,则程序运行时需要在内存中分配两个字节作为变量a的存储区域,并且将5存放进去。设系统给a分配的空间是内存中1027和1028两个单元,如图下,则变量的值是5,变量的地址是1027。
把内存的哪两个字节分配给变量是不可预知的,但变量分配在什么地方,系统是知道的。每当在内存中给一个变量分配了空间,系统都会把变量名和它的地址,类型等信息记录下来,以便将来找到它,存取它。
因此,在变量获取空间之后,其地址是可以被知道的,用取地址运算符&便可以获取变量的地址。
下面的程序可以输出整型变量a的两个属性
#include
main()
{
int a=5;
printf("%d,%p\n", a, &a); //%p表示用十六进制数输出地址
return 0;
}
运行结果
试一试:把代码中的“=5“去掉,运行一遍程序,看a还有没有值。
6.变量的赋值和赋初值
给指针变量赋值
int a,*p; //在内存中给a和p分配空间
p=&a; //把a的地址存到p中,即给p赋值
赋初值
在给变量分配空间的时候就向其中存放数据,称为赋初值。例如:
int a=10;
赋值和赋初值的区别:
开辟空间和存放数据这两件事情若是分两次完成的,是赋值;开辟空间和存放数据这两件事情是一次就完成的,是赋初值。
定义若干变量时,可以只对一个或一部分变量赋初值,例如:
int a,b=1,c,d=3,e,f;
也可以给全部变量都赋初值,例如:
int a=5,b=5,c=5;
注意:变量初值相同时,不可以写成:
int a=b=c=5;