【说明】
我们知道const 是关键词可以将一个变量声明成常量,即它的值不可改变,那如果是要声明一个指针 指向常量怎么办?又或者指针本身是常量又怎么声明?
【最简单】
const int a = 1;
int const a = 1;
上边这2种方法没有任何区别,都是声明一个常量a 它的值不允许改变,
【指针】
int onst * p = NULL;
这是声明一个指向整型常量的指针,可以修改指针的值,但是不能改动指针所指的变量的值
int * const p = &a;
这是一个常量指针,它自身的值不能改变,但是能改变所指向的变量的值
int const * const p = &b;
显然,这个就是指向常量的常量指针,也就是它自身是常量不能改变,它所指向的值也是常量不能改变!
【深入理解】
#define XXX 1
const int XXX = 1;
这两个有区别吗?有!其实我们所谓的常量,即被const 修饰的变量 ,它本质上还是变量,它只能干变量干的事情,而无法直接当成常数使用,比如在case关键字后面是不能跟const 变量的,更具体得说,就是const 关键字其实并不是说声明一个常量,而是说声明一个只读变量!
而#define 是宏定义,它后面的东西到时候会被扩展,也就是用到XXX的地方到时候就是1,也就是一个数值,是真正是常量,这个和const 声明的XXX有质的区别。