零基础入门学习C语言:带你学C带你飞
上QQ阅读APP看书,第一时间看更新

1.10 常量

视频讲解

上一节介绍了变量,变量就是在内存中找一个适当的空间并给它命名,用它来存放数据。这一节来说说常量,什么是常量呢?在程序运行的过程中,它的值不能够被改变,称为常量。如字符'a',数字520,小数3.14,这些都是常量,因为它们仅代表一个具体的值,并且不能够被改变。

C语言中常见的常量如下。

(1)整型常量:520, 1314, 123。

(2)实型常量:3.14, 5.12, 8.97。

(3)字符常量。

·普通字符:'L', 'o', 'v', 'e'。

·转义字符:'\n', '\t', '\b'。

(4)字符串常量:"FishC"。

(5)符号常量:使用之前必须先定义。

1.10.1 定义符号常量

符号常量的定义格式为:

比如:

其中,#define是一条预处理命令(预处理命令都以"#"开头),也称为宏定义命令。预处理命令在后边会给大家专门讲解,现在只需要知道#define的功能就是把程序中所有出现的标识符都替换为随后的常量。

宏定义就是这么简单,但却非常实用,在之后的大型程序开发中我们离不开它。举个例子:

上边的大写字母URL、NAME、BOSS、YEAR、MONTH、DAY都是符号常量,正如大家看到的,为了将符号常量和普通的变量名区分开,习惯使用大写字母来命名符号常量,使用小写字母来命名变量。

1.10.2 标识符

在C语言中,标识符指的就是一切的名字。比如1.10.1节中的符号常量名是标识符,变量名也是一个标识符,即将学到的函数、数组、自定义类型的名字都称为标识符。那么标识符的命名就需要符合一定的规律,就是1.9节变量的命名规律。

1.10.3 字符串常量

关于字符串常量,我觉得有必要跟大家开展一轮“头脑风暴”!

我们都知道用单引号括起来表示一个字符,编译器只需要为每个字符准备一个字节的空间就足够存放了,如图1-11所示。

图1-11 单个字符的内存空间

用双引号括起来的表示一个字符串,字符串就是一串字符连在一起,那么这串字符在内存中的存放就成了问题。

比如"Hello World"是11个字符,那么编译器只需要为它准备11字节的空间即可存放,但"I love FishC.com!"是17个字符,也就意味着编译器需要为它准备17字节来存放。说到这里,大家知道问题出在哪儿吗?没错,问题就出在当代码写完了,编译执行的时候,操作系统如何判断一个字符串的长度。

我们知道内存的空间是连续的,字符串的长度又是不确定的,所以如果无法判断一个字符串的长度或者结束位置,那么就无法完整地读取整个字符串。因此,C语言的发明者需要发明一种方法,当操作系统读取一个字符串的时候,就可以确定它的结束位置,或者知道它的长度。

那么C语言的发明者是怎么做的呢?他用一个特殊的转义字符来表示字符串的结束位置,这样当操作系统读取到这个转义字符的时候,就知道该字符串到此为止了,这个转义字符就是空字符:'\0'。