常量指针和指针常量的区别,指针常量和常量指针的区别如何记忆

1,指针常量和常量指针的区别如何记忆看const在哪里:数据类型*指针变量名; 这个声明格式 指针变量名前面有3个空白可以加入const前面两个都是修饰的指针,都是指向常量的指针,比如int const *p; 或者const int *p;自己可以变,但是不能通过这个指针来改变指针指向的目标最后一个,const 距离变量名最近,因此指针是常量 , 自己不能改变了 , 但是可以通过这个指针改变指针指向的目标
2,常量指针和指针常量有什么区别int a;int * const p = &a //指针常量,*p可以修改*p = 8;(OK) p不可以修改 p++(ERROR)int a , b;const int *p = &a;//常量指针 *p不可修改 *p = 8;(ERROR) p 可以修改 p = &b (OK)还有一种const int * const p = &a; // *p 和 p均不可改变了
3,指针常量与常量指针这个就是int const *和int * const的区别 。int const * pc;是定义一个指向常量的指针,这个常量的值是不能变的,但是pc指针本身仍然是个变量 , 所以我们可以对其进行赋值即:pc = &z,但不能这样*pc = 3,因为*pc代表的是pc所指向的内容,在这里是个常量 , 常量是不能被赋值的 。而int * const cp;因为const紧跟着cp所以cp被定义成常量,这样指针cp的值就不能被改变了,如果y被定义成变量即:int y = 3;那么* cp的值即常量指针cp的值仍然可变 , 但cp指针本身是个常量 。指针常量是需要被赋值的,算法是从上往下执行,在执行完int * pp = &z;后,指针的赋值是可以改变原来的赋值的 , 所以*pc改变成&z的值 。常量指针表示指针的值是一个常量,比如int a = 0; int *const ptr= &a;也就是说指针指向的地址是不变的,但是他的内容可变 。指针常量是指指针指向的是一个常量,也就是说指针指向地址的值是不变的 。比如const int *ptr =0;【常量指针和指针常量的区别,指针常量和常量指针的区别如何记忆】
4,指针常量和常量指针的区别int a = 10;int * b = a;//指针const int * c = a;//指向常量的指针int * const d = a;//常量指针const int * const * e = a;//常量指向常量的指针你想问什么b是可以修改自己,就是可以重新指向别人,也可以修改a的数据c是不能修改a的数据 , 不过可以重新指向别人d是不能重新指向别人不过可以修改a的数据e是既不能指向别人也不能修改a的数据常量指针表示指针的值是一个常量,比如int a = 0; int *const ptr= &a;也就是说指针指向的地址是不变的,但是他的内容可变 。指针常量是指指针指向的是一个常量,也就是说指针指向地址的值是不变的 。比如const int *ptr =0;指针常量:指针指向的内容是不允许修改 。常量指针:指针指向的内容是允许修改,指针指向的地址是不允许修改.常量指针就是指针只能指向常量的地址 常量是什么不用说了吧 。。。int a=5;5的地址就是常量,a的是变量 。p只能指向常量但是p可以改变 , 即可以指向不同常量 。指针常量就是指针本身指向的地址不能变,即int *p=a; 这个p即&a不能变,但是a可以改变

    推荐阅读