const的三种用法

const的三种用法是指向常量的指针,常指针,指向常量的常指针吗?区别是什么呢

该回答引用GPT:
是的,const的三种用法指的是指向常量的指针,常指针,以及指向常量的常指针。

指向常量的指针:

int const *p = &a; // p指向常量a

常指针:

int * const p = &a; // p是一个常指针,指向变量a

指向常量的常指针:

int const * const p = &a; // p是一个指向常量a的常指针

这三种用法的区别在于指针的可变性,指向常量的指针可以改变指向,而常指针和指向常量的常指针则不能改变指向。
如还有疑问,可以私信帮助解决。

常量的指针,指针本身不是常量
常指针,指针内容不是常量
指向常量的常指针,都是常量,都不能修改

  • 这篇文章:const 用法 也许有你想要的答案,你可以看看
  • 同时,你还可以查看手册:c语言-const 中的内容
  • 除此之外, 这篇博客: 【C/C++】const修饰指针和常量(三种用法)中的 2.1 const修饰指针 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • int a=10:
    int b=10:
    
    const int* p1=&a;
    

      此时p1是一个指针常量,const修饰的是p1这个变量指向的地址内的数据类型,即修饰的是*p1的值。所以指针常量的指向可以变,指针指向的地址里的内容不可变,即p1可变,*p1不可变

    *p1 = 20;  //错误,指针指向的值不可以改
     p1 = &b;    //正确,指针指向可以改