C++中的常量符号const限定符相信大家都比较熟悉它对于基本类型变量的使用方法了
无非有最常用的那种:
const type name = value;
在声明的时候进行初始化。
这个放下不表,看下面:
const * int a = ...;
int * const a = ...;
int const * a = ...;
这三种const限定符指针有什么区别呢?
看下面这段程序
#include <iostream>
int main(void)
{
using namespace std;
int b = 12;
int c = 14;
const int * a = &b; //地址可变,指向的内存块的内容不能改变
cout << *a << endl;
a = &c;
cout << *a << endl;
int * const v = &b; //内容可变,地址不可变
cout << *v << endl;
*v = 14;
cout << *v << endl;
b = 12;
int const * d = &b; //与const int *相同
cout << *d << endl;
d = &c;
cout << *d << endl;
return 0;
}
运行结果为:
12
14
12
14
12
14
程序显示的很明白了,const int * a 和 int const * a 限定的是*a,即限定的是指针指向的内存块的内容,在它指向此变量的过程中,不能通过指针a对该内存块的内容进行更改(可以试一下: *a = 15; 编译无法通过)。int * const a 限定的是指针变量a,说明指针变量的值是无法改变的,即指向的地址无法改变,但是指向的地址的内容却可以改变。
以上是个人见解,希望各位大牛评价指正