指针常量和常量指针区别

①注意一下:

往往中文属于里形式如AB ,那么A是描述,B是本质。
比如 数据库管理系统 数据库管理是描述 系统是本质
比如 函数指针 函数是描述 本质是指针,这个指针指向函数地址

(那本质和描述的区别是?描述变了还是同一大类,本质变了就不是同一大类了)

②言归正传:
常量指针,也就是本质是指针,什么样的指针呢?常量类型的指针,什么叫常量类型的指针呢?
回忆一下函数指针,指向函数地址的指针。

那么常量指针,就是指向常量类型地址的指针。

比如const int * p;

而指针常量,本质是常量。
什么类型的常量?指针类型的常量,为了能够有个术语结构上的对比,你肯定知道整型常量,也知道是这么定义的:const int a;

但指针常量,是这么定义的 : int * const a;

const 在 *前面,是常量指针,const在*后面,是指针常量。

③这二者的区别就是:
const int *p 指向的是 const int a=2;的&a;p可以变化但是*p不可以变化。
而int * const p=&a; 意思是描述的是p,p不可变,就如const int a=2; a的值就不能再改变了。那么p不可以变,但是*p可以变。

还有一种是 综合一起的,const int * const p=&a; 这种一旦确定值,*p和p都不能变化。


#include<iostream>

using namespace std;

int main()
{

    int i = 2;
    int j = 2;
    const int *a = &i; //常量指针,指针内容不可变,地址可变
    a = &j;
    *a = j;//error
    cout << *a << endl;
    int *const b = &i;//指针常量,指针地址不可变,内容可变
    *b = j;
    b = &j;//error
    system("pause");
    
    return 0;
}
原文地址:https://www.cnblogs.com/xiawen/p/3156395.html