21天学习C语言-第三天

5次阅读

共计 2253 个字符,预计需要花费 6 分钟才能阅读完成。

数据的存储,变量和常量。程序存在的意义就是数据处理,计算机通常需要将要处理的数据存储起来。存储方式有两种,存储在变量或者常量中。之前提过,变量的值是可变的,常量的值是不可变的。
计算机内存
计算机使用随机访问内存 (random-access memory,RAM) 来存储处理过程中的数据。RAM 中的数据是不稳定的,如果需要,你可以改变所存储的信息。同时,RAM 中的数据也不持久,一旦关机,数据就丢失了。

计算机内存一般以 MB 为单位,1MB=1024KB, 1KB=1024B, B 为 byte 的缩写。byte 是计算机数据存储的基础单元。

RAM 是按照顺序排列的,一个 byte 接着另一个。每一个 byte 都有一个唯一的地址来标识,我们用这个地址来找内存中的某一个 byte。这些地址按顺序分配给 RAM,从 0 开始,一直到系统的最大限制,目前还不需要手动操作内存,都是系统自动搞定的。
变量(Variables)
变量是数据在内存中存储位置的名称,程序通过变量来找到数据的所在位置。
变量命名原则

变量名称可以包含字母,数字,下划线
变量首位必须是字母,下划线也可以,但是不推荐,不能以数字开头。
C 语言是大小写敏感的,name 和 Name 是两个完全不同的变量。
关键字不能作为变量名。

变量命名要见名知意,可以下划线分隔单词,也可以用驼峰命名法,看个人喜好。下划线可读性高一些,驼峰写代码的时候速度快一些。
数值类型变量
C 为变量提供了不同的数值类型,不同的类型在内存中有不同的存储要求,在做运算时的效率也不一样。选择合适的类型,能有效提高程序的运算效率。具体有以下两种数字类型:整型 (Integer) 为没有小数部分的数字,又包括有符号 (signed) 和无符号 (unsigned)。有符号包括正数附属和 0,无符号则是非负数。浮点型(Floating-point) 为有小数部分的数字。下图是变量的类型,关键字,长度及取值范围(一直以为 char 不是数值类型,这里不太理解)。
变量声明
C 语言中,变量在使用之前必须声明,声明变量是告诉编译器变量的名字和类型,有的时候会直接初始化变量的值。如果使用未声明的变量,编译器会报错。变量声明格式如下:typename variable_name;typename 是前面变量类型的关键字 variable_name 是变量的名字例如:
int age; // 年龄,整型变量
float salary = 30000.00; // 薪水,浮点型变量,初始化为 30000.00

typedef 关键字
typedef 用来给一个已存在的类型关键字重新命名,暂时感觉不到有什么用。不过在刚毕业的时候读过一篇文章,如何写一些谁都不能维护的代码,里边经常用这个关键字。看下例子:
typedef int integer;
integer count;
这里把 int 这个关键字重命名为 integer,然后用 integer 这个关键字声明了变量 count。
变量初始化
前文提过,使用变量之前要先声明,这样编译器才能不报错。同时,使用变量之前也要初始化,否则,变量当前的值可能是不确定。如图,每次输出未赋值的变量,结果都是不一样的:
C 中用 = 表示赋值操作,如:
int count;
count = 18;

声明整型变量 count,之后给 count 赋值 18.
常量(Constants)
常量和变量一样,都是用来存储数据的,不同的是,常量中存储的数据在程序执行过程中是不能改变的。常量分为字面常量 (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;
两种定义常量的方式是有区别的,会在后续的学习中逐渐解释。
第三天就明显感觉赋值了许多,洗洗睡了。

正文完
 0