1. 概述
常量就是常规的变量,它是一个固定值,在程序运行期间不能更改,也就是常说的“字面量”,任何基本数据类型都可以声明为常量,通常以大写字母的形式定义。
2. 常量名
常量名的命名规则一般遵循变量的命名规则,常量名的书写规范一般是大写字母:
#define PI 3.14 //宏定义一个常量,名为PI
#define MAX_LEN 256 //宏定义一个常量,名为MAX_LEN
#define a 1 //不建议小写,容易和变量混淆
3. 常量的声明与初始化
我总结了可以定义常量的四种方式:
第一种:宏#define定义,它只是简单的文本替换,直接把值替换到具体使用的地方,因此不用指定数据类型,#define定义的常量在整个程序中都有效,定义方式:#define 常量名 值
#define MAX 100 //在使用MAX的地方会替换成100
#define MIN 0 //在使用MIN的地方会替换成0
第二种:const修饰的变量,上个章节已经说过了,它本质上还是个变量,只不过是编译器加了限定符转换成了常量,除了不能修改值以外,其他的和变量基本一样,因此把const修饰的变量称为“伪常量”。
const int a = 10;//a本质是个变量,加上限定符const就不能修改了,否则编译器提示报错
第三种:枚举常量,枚举是一种特殊类型,后面会讲到。它也算是常量的一种,枚举成员一般也是大写字母。
//定义一个枚举类型颜色,第一个成员默认值为0,依次类推
enum color
{
RED,
WHITE,
GREEN,
BLUE,
BLACK
};
//使用枚举
enum color e = BLUE;
第四种:字符串常量,在C语言中还有字符串的概念,字符串是由一系列的字符组成的数组,最后一个元素是空字符\0,表示当前字符串的结束。以字符指针(字面量方式)的形式创建字符串,指向一个常量区的内存地址,而使用字符数组的形式创建字符串则不会被分配到常量区。
char *c = "123";//字符指针,存储于常量区
char c[] = "123";//字符数组不是常量
4. 小结
- 常量就是固定不变的值,定义后不能修改;
- 常量名一般以大写字母的形式出现,为了和变量区分;
- 定义常量的四种方式:宏#define定义、const修饰的变量、枚举常量、字符常量
- 关于字符串是否是常量的问题以及定义方式是否影响还有待考虑