基本概念
1.当const修饰普通变量时
const int a=10;
则a为常量,a的值恒定为10无法被改变。
2.当const修饰指针变量时
(1)const在数据类型后面
int* const p=&a;
指针的指向无法被改变,但指针指向的值可以被改变
(2)const在数据类型前面
const int*p=&a;
指针的指向可以被改变,但指针指向的值无法被改变
如何更方便的理解
当一个指针在定义时没有被const修饰:
如
int *p=&a;
无论是指针变量p的指向还是p所指向的值都是可以被改变的。
- const在数据类型后面 (int* const p=&a;)
当指针变量被如下定义时:
int* const p=&a;
可将const p 看做一个整体,即p的值是const型的无法被改变 ,众所周知p的值是一个地址,上例中p的值是用来存放a变量值的地址,我们说p指向a,若p的值是一个常量,我们就无法完成像p=&b;即再次将p指向b这样的操作 同时这样的const修饰没有对 “指针变量本身可以修改所指向地址所存放的值 ” 这种属性造成影响, 所以就实现了上述属性------指针的指向无法被改变,但指针指向的值可以被改变。
- const在数据类型前面(const intp=&a;)
当指针变量被如下定义时:
const intp=&a;
可将const int看成一个整体,即p所指向地址中存放的值为const int型,类比上述就很好理解了,p的指向可以修改的属性没有被改变,只限定了p最终指向的数值为一个常量,从而满足属性—指针的指向可以被改变,但指针指向的值无法被改变。
(新人记录学习心得,略有粗略,如有错误还请指正)