回复 7楼 weishen2011
这几天忙,没上线,不好意思!
这个就是这个意思:
"abcde"是一个常量字符串。当该进程执行的时候,它被读入内存,存放在内存布局的常量存储区(注意这一区域是不可改变的,以为是常量,有内存读取权限
但是没有写权限)
既然在内存中,这个字符串就会有一个内存地址,对吧。因此当你定义一个指针指向这个地址的时候,相当于指针指向了常量区,因此你肯定不能修改其中的数据
这个好理解吧!相当于 const int *p;(内容常量)
主要是数组这个东西。首先数组名字是一个常量指针!它不可以改变,但是数组是局部变量,是在栈上分配内存的。
而初始化相当于把常量字符串"abcde"赋值了一份。给栈上的数组填充赋值了(当然也有可能是一种映射)
但是这就说明这个常量指针(数组名字)不是指向常量区,也就没有常量属性,因此就可以修改了!相当于int * const p;(指针常量)
你可以读出指针和相应变量的地址来检测一下