int main()
{
int i = 1;
int j = 2;
int *const p1 = &i; // 常量指针 : 指针本身是常量
int const *p2 = &j; // 指针常量 : 指向的内存是常量
*p1 = 3;
// p1 = &j; // Error
p2 = &i;
// *p2 = 3; // Error
return 0;
}
以上代码供参考。
PS:这两个名称其实网上说法不一,有人颠倒着说,有人这么说。
咱们不纠结怎么称呼,只要理解就好。 (我找了一下《C程序设计语言》[毕竟C语言之父,人家是权威] 里,貌似没有明确命名,所以我就不敢下定论了)
我是这么记忆的:
从右往左看,谁先出来,读谁。例如:int * const p 从右往左看,先 const 后 * 所以就 常量指针。
常量指针:分开读,常量、指针,意思就是这个指针是常量,所以指针本身的值不能改;
指针常量:分开读,指针、常量,先指针,后常量,指针指向一个常量,所以常量的值不能改。
注:如果您能找到官方的对两个称谓的规范,请指正,谢谢!