const int a=1; 和int const a=1; 意思一样,都是修饰a为常量。
const int *p = &b; const 修饰的是 *p 所以指针指向的内容是不可改变的,
int * const p = &b; const 修饰的是指针变量p,所以指针所指向的地址是不可改变的,指向的内存数据是可以改变的;
const int* const p = &b; 指针所指向的地址不可改变,指向的内存数据也不可改变。
在C语言中,const int a=1;可以通过指针改变a的值;
例如:int *p=&a;
*p = 10; 编译会有警告但会输出 a=10;
在C++中,const int a=1; 不能通过指针改变a的值,可以在定义数组的时候使用 如: int buff[a] ={0};
注意这种写法在C语言中是不允许的。