在C++中,常量可以通过两种方式来定义:
1、在声明或定义变量之前用const;
2、通过宏定义,也就是#define
例如:将pi定义为常量,const float pi=3.14;或 #define pi 3.14
接下来,讨论下const和#define之间的区别:
1、define只能用来做文本宏替换,define的生命周期在编译器就会结束,存在于程序的代码段,在实际程序中指示作为一个常数;而const常量存在于程序的数据段,并在堆栈中分配有空间;
2、define定义的常量在程序运行时不可以被调用、传递,因为define定义常量时没有分配内存空间,仅仅只是给一个常数起了个别名;而const常量在程序中确实存在,所以在程序运行时可以被调用和传递;
3、define定义的常量没有数据类型;而const定义的有数据类型。
常量指针:
例如:char *const a; //表示字符指针a本身是常量,但是a所指内存空间的数据是可以改变的,注意定义时一定要初始化;
char const* a;和const char * a;//表示a所指的内存空间中的数据为常量,不可以改变,但是指针的本身是可以改变的;
const char * const a;//这种表示方法表明指针a本身是常量,并且a所指的内存空间中的数据也为常量,这种定义时一定要初始化。