一、define
无参宏定义的一般形式为:#define 标识符 字符串
其中的‘#’表示这是一条预处理命令。凡是以‘#’开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。
例如:#define MAX 10 它的作用是指定标识符MAX来代替常数10.在编写源程序时,所有的10都可以由max代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用10常数去置换所有的宏名MAX,让后进行编译。
二、const
概念:
常数类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。、
const的使用
(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。
TYPE const ValueName=value;
const TYPE ValueName=value;
(2)将const改为外部链接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义。
(3)可以定义const常量,具有不可变性。 例如:
const int Max=100; int Array[Max];
(4)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
(5)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(6)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如:
void f(const int i) { i=10;//error! }
(7) 为函数重载提供了一个参考。
class A { ......
void f(int i) {......} //一个函数
void f(int i) const {......} //上一个函数的重载 ......
};
三、enum
说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号
. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。
. 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,sat值为6。
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如一定要把数值赋予枚举变量,则必须用强制类型转换。
1
|
|