1. const
char
*p1;
2. char
*
const
p2;
以上两种情况,到底哪种是指针不能变,哪种是变量不能变呢?下面做一个记录,防止以后出错
记住一句口诀“左定值,右定向”
如果const在 * 左边,那么定义的变量值不能改变,但指针是可以改变的
如果const在 * 右边,方向即指针不能变,也就是这个指针只能指向这块内存,你可以改变内存的值,但不能通过指针引用来改变
再回到上面的例子:
1.const在 * 的左边,所以,p1的指向的值是不能变的,但p1这个指针可以改变,例如p1++
2.const在 * 的右边,所以,p2指针不能变,只能指向这块内存,但这块内存的值确实可以变的,例如(*p2)++
上面那个(*p2)++ 括号千万不能省,因为一目运算符 ++ 的优先级比 *(取值)要高,不加括号就是指针加1后取值,这样是错误的。
关于运算符优先级的运算下次再写一个记录