常量指针与指针常量

一、常量指针是指针指向的对象是常量, 即指针变量可以修改, 但是不能通过指针来修改其指向的对象. 例如

  int d=1;

  const int *p=&d;   //const修饰的是int对象, 等效为 int const *p=&d;

  *p=2;   //编译时报错

二、指针常量是指针本身是个常量, 不能再指向其他对象.

  在定义指针时, 如果在指针变量前加一个const修饰符, 就定义了一个指针常量, 即指针值是不能修改的. 例如

  int d=1;

  int* const p=&d;   //const修饰的是指针p, p不能再修改, 但是它指向的内容可以修改, 如*p=2(实际上是将d的值改为2).

三、区分常量指针和指针常量的关键是*的位置, 如果const在*的左边则为常量指针, 如果const在*的右边则为指针常量.

  记忆方法: 将*读作指针, 将const读作常量, 例如

  定义 int const *p,  p是常量指针

  定义 int * const p, p是指针常量

参考资料:

《程序员教程》---张淑平

posted @ 2021-07-26 15:13  任小七  阅读(1532)  评论(0编辑  收藏  举报