用const修饰指针可以形成四种权限的限制,并达到控制指针与所指数据的常态性(也就是做到最小访问权限)。那什么样的场合下会用到这样的权限控制呢?这个主要还是应用在函数调用当中。比如举个例子,当我们调用函数时,并不希望函数体内对于传入的指针参数修改指针所指对象的数据时,就派上用场了。const修饰的指针有四种类型,下面我们来详细解析一下:
1.指向常量数据的常量指针(具有最小访问权限),即格式:const int * const ptr //读做ptr是指向整型常量的常量指针。
应用的场合:把数组当做参数传递给函数,而不希望函数来修改数组当中的内容时。此时我们只能读取相应数组中的元素,无法修改。若有修改行为,编译器报错。
2.指向常量数据的非常量指针(即指针可以指向其它地址,但不能修改所指对象的数据)。即格式:const int * ptr //读作ptr是指向整型常量的非常量指针
3.指向非常量数据的常量指针(即指针的地址不能修改,但指针所指对象的数据可以修改)。即格式:int * const ptr //读作ptr是指向非整型常量的常量指针
4.指向非常量数据的非常量指针(即指针的的地址可以修改,所指对象的数据也可以修改,具有最大的访问权限)。即格式:int * ptr //读作ptr是指向非整型常量的非常量指针。