数据的存储,变量和常量。
程序存在的意义就是数据处理,计算机一般须要将要处理的数据存储起来。存储方式有两种,存储在变量或者常量中。以前提过,变量的值是可变的,常量的值是不可变的。dom
计算机使用随机访问内存(random-access memory,RAM)来存储处理过程当中的数据。RAM中的数据是不稳定的,若是须要,你能够改变所存储的信息。同时,RAM中的数据也不持久,一旦关机,数据就丢失了。学习
计算机内存通常以MB为单位,1MB=1024KB, 1KB=1024B, B为byte的缩写。 byte是计算机数据存储的基础单元。spa
RAM是按照顺序排列的,一个byte接着另外一个。每个byte都有一个惟一的地址来标识,咱们用这个地址来找内存中的某一个byte。这些地址按顺序分配给RAM,从0开始,一直到系统的最大限制,目前还不须要手动操做内存,都是系统自动搞定的。code
变量
是数据在内存中存储位置的名称,程序经过变量来找到数据的所在位置。blog
变量命名要见名知意,能够下划线分隔单词,也能够用驼峰命名法,看我的喜爱。下划线可读性高一些,驼峰写代码的时候速度快一些。
ip
C为变量提供了不一样的数值类型,不一样的类型在内存中有不一样的存储要求,在作运算时的效率也不同。选择合适的类型,能有效提升程序的运算效率。具体有如下两种数字类型:整型(Integer)
为没有小数部分的数字,又包括有符号(signed)
和无符号(unsigned)
。有符号包括正数附属和0,无符号则是非负数。浮点型(Floating-point)
为有小数部分的数字。
下图是变量的类型,关键字,长度及取值范围(一直觉得char不是数值类型,这里不太理解)。内存
C语言中,变量在使用以前必须声明,声明变量是告诉编译器变量的名字和类型,有的时候会直接初始化变量的值。若是使用未声明的变量,编译器会报错。变量声明格式以下:typename variable_name;
typename
是前面变量类型的关键字variable_name
是变量的名字
例如:ci
int age; //年龄,整型变量 float salary = 30000.00; //薪水,浮点型变量,初始化为30000.00
typedef
用来给一个已存在的类型关键字从新命名,暂时感受不到有什么用。不过在刚毕业的时候读过一篇文章,如何写一些谁都不能维护的代码,里边常常用这个关键字。看下例子:编译器
typedef int integer; integer count;
这里把int这个关键字重命名为integer,而后用integer这个关键字声明了变量count。it
前文提过,使用变量以前要先声明,这样编译器才能不报错。同时,使用变量以前也要初始化,不然,变量当前的值多是不肯定。如图,每次输出未赋值的变量,结果都是不同的:
C中用=表示赋值操做,如:
int count; count = 18;
声明整型变量count,以后给count赋值18.
常量
和变量同样,都是用来存储数据的,不一样的是,常量中存储的数据在程序执行过程当中是不能改变的。常量分为字面常量(Literal Constants)
和符号常量(Symbolic Constants)
。
字面常量是在须要的地方直接写在代码里的,没有什么特殊的深意。例如:
int count = 20; float tax_rate = 0.28;
这里的20和0.28都是字面常量,在须要的地方直接使用就能够了。
符号常量
是把一个字符常量用一个名称展示(不太好表达)出来,简单来讲调用的时候用名称就好了。经典例子π:
float circumference = 3.14 * (2 * radius); float area = 3.14 * (radius)*(radius);
这里咱们计算了圆的周长和面积,同时都用到了3.14这个常量,若是咱们要继续计算其余用到π的面积,那么就须要一直写3.14这个常量了。这时候符号常量就有用了,咱们把3.14这个数字定义为符号常量PI。以后的代码就能够简化了:
float circumference = PI * (2 * radius); float area = PI * (radius)*(radius);
有人说这其实没有区别呀,每一个地方写PI和每一个地方写3.14差异不大。差异并不在乎写代码时是否多按了几个键,试想下,若是这时候要求结果精确一些,须要把3.14换成3.1415926的时候,麻烦的事就来了。若是定义了常量PI,那么咱们直接在代码里把PI的值改成3.1415926,一键搞定了所有的3.14。
常量名习惯上都要大写,这样容易和其余变量区分开来。定义符号常量有两种方式,#define和const:#define
定义常量格式以下,关键字+常量名+常量
,不须要以分号结尾:
#define CONSTANT_NAME literal #define PI 3.14
const
定义常量格式,关键字+类型+常量名=常量;
,分号结尾:
const type CONSTANT_NAME = literal; const float PI = 3.14;
两种定义常量的方式是有区别的,会在后续的学习中逐渐解释。