C++中内存区分为堆区、栈区、全局区和常量区。注意:常量区的东西是不能被修改的
指针常量(先说指针后说常量):它就是一个常量,但是是指针修饰的
int a,b;
int * const p = &a;
p = &b; //失败
*p = 10;//成功
这个指针被存入了常量区,常量区的内存是不能修改的,所以这个指针中存储的地址值是不能被修改的,但是p所指向的地址不在常量区,可以修改。
常量指针(先说常量再说指针):在定义指针变量的时候,数据类型前用const修饰,被定义的指针变量就是指向常量的指针变量,指向常量的指针指针变量称为常量指针(常量指针可以指向非常量,但非常量指针不能指向常量,所以常量指针一般只指向常量)
常量的定义为 const int a =3(例子);
const int a=5,b=9;
const int * p = &a;
p = &b; //成功
*p = 10;//失败
常量指针是指向常量区的指针,指针可以变,但常量区不能变。指针可以从常量区的一个地址指向另一个地址,但不能改变常量区的值。常量区中存储的东西是不能被改变的。