1
char str[ ] = "welcome!!";
const char * p = str;
对于上述const 标识,很多人的理解是const 修饰的是指针指向的内容,说明指针指向的内容不可以被修改,我觉得这样的理解多少有点偏差跟不正确的地方。
试想,如果内容不可以被修改,那么我在后面加一句话
str[ 0 ] = 'A';
这是正确的,但是
*p = ‘A’;
这句话是错误的,为什么呢?
说明之前的指针内容不可以被修的理解方式是有误解的。
所以我觉得恰当的理解应该是
const 标识修饰的不是指针的内容,它没有保护指针指向的内容不可以被修改,而是指针,它限制了指针的权利,它告诉编译器,这个指针只能指空间,而不能用来
修改被指空间的内容,被指空间的内容是可以通过其他方式修改的。
2
char str[ ] = "welcome!!";
这种情况跟上面的第一种情况的理解完全相同。
3
对于另一种情况就更为简单了:
char str[ ] = "welcome!!";
char * const p = str;
上述的 const 标识也使用来修饰指针,说明该指针不可以被移动,但是它可以用来修改它指向空间的内容。