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'。