学了这么久C语言我居然不知道变量常量?

在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.其变化过程如图所示。

学了这么久C语言我居然不知道变量常量?_第1张图片

 图中蓝色的两个字节是系统分配给a用来存整数的,因为其中所存的数可以改变,所以把这两个字节称为变量a。

说明:几乎所有微机的CPU在存放数据时都采用小端模式,即先存放低字节,再存放高字节。


2.变量的类型:

学了这么久C语言我居然不知道变量常量?_第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。

学了这么久C语言我居然不知道变量常量?_第3张图片

    把内存的哪两个字节分配给变量是不可预知的,但变量分配在什么地方,系统是知道的。每当在内存中给一个变量分配了空间,系统都会把变量名和它的地址,类型等信息记录下来,以便将来找到它,存取它。

    因此,在变量获取空间之后,其地址是可以被知道的,用取地址运算符&便可以获取变量的地址。

下面的程序可以输出整型变量a的两个属性

#include
main()
{
	int a=5;
	printf("%d,%p\n", a, &a);              //%p表示用十六进制数输出地址
	return 0;
}

运行结果

学了这么久C语言我居然不知道变量常量?_第4张图片

 试一试:把代码中的“=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;

你可能感兴趣的:(C语言可以这样学,c语言,开发语言)