❶全称指向一个常量的指针,核心为指针。即一旦指向一个地址,该地址的值不能通过该指针来修改(但可经由指向的变量间接修改);可以更改该指针的值(更改指针指向的地址)。

     ❷定义 const 在“*”左侧。const int *p    int const *p 

     ❸使用

int a = 5;
const int b = 8;
const int *c = &a; //合法
*c = 6; // 非法。但可间接修改c指向的对象的值:a = 6;
const int *d = &b; // 更改地址,合法

   ❹函数形参为常量指针但可接受非常量字符串。目的在于限制了外部变量在子函数内部被更改。
                   int strcmp(const char *str1, const char *str2);

2.指针常量

     ❶全称指针类型常量(地址不能更改),核心为常量,即值为常量的指针。即一旦指向一个地址,不容许修改指针值(更改指向地址);但可以经过指针更改地址存储的内容。

   ❷定义const 在*右侧 。int *const b。
           注意因为为常量,声明时必须赋给初值,一旦赋值,不可变更。

     ❸使用


3.指向常量的常量指针

    ❶全称:指针指向存储常量的常年地址。指针指向地址不能更改,地址的存储内容也不能更改

  ❷定义和使用:
      const int a = 25;
      const int * const b = &a;


4.总结 

    ❶ b是指向常量的指针变量,当b指向别的字符串,d仍然指向b初始的字符串。
    ❷ b此处静态编译理解成字符串常量指针,不能通过指针b更改内容。


  对于以上定义 p1++即移动指针合法,但是修改不合法。对于p2, *p2='c'即修改合法,但是移动p2不合法。



本文参考:

   常量指针与指针常量的区别(转帖)


相关文章:

  • 2022-12-23
  • 2021-04-06
  • 2022-12-23
  • 2021-05-22
  • 2021-07-04
猜你喜欢
  • 2022-01-22
  • 2022-12-23
  • 2022-12-23
  • 2021-10-03
  • 2022-12-23
  • 2021-05-14
  • 2021-05-31
相关资源
相似解决方案