1、修饰整型变量const int a 就是声明了一种常量表示该变量的内容不可改变
2、对于修饰指针的const就有说法了
const int *a 和int* const a这是两种不同的用法
第一种:
const int *a表示定义了一个指向const变量的指针,但是指针本身不是const类型,也就是说指针本身可以修改但是指向指针的内容不可以修改。
例如:定义一个const变量b,在定义一个const 变量a指向b,然定义一个变量d,然后指针a指向d的地址,这是合法的
解析:
被const修饰的变量b表示这个变量的内容不可改变,也就是说这块内存空间是一个只读区域
而后面定义的指针变量a,这只是一个指向变量b地址的指针,这个指针本身是可以修改的
第二种:
定义一个变量b,然后定义一个int *const a的指针变量a,指向这个变量b,此时这个指针变量a本身是不可以改变的,但是他指向的值是可以改变的
如果这里给a重新赋值编译器就会提示错误:表达式左值必须是一个可以修改的值,但是由于是int* const表示这是一个常量指针所以不能直接修改指针的值,但是可以修改指针指向的内存空间的b中的值。
个人理解:感觉所谓指针就是为了访问内存空间而存在的,而const关键字是用来限制内存空间的访问权限
const int *a是限制了指针指向的内存空间访问权限是只读的不可修改,而int* const是限制了指针变量本身的内存空间访问权限是只读的,应该是这样的