zoukankan      html  css  js  c++  java
  • 指针常量和常量指针区别

    ①注意一下:

    往往中文属于里形式如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;
    }
  • 相关阅读:
    java第一次作业
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
    第七次作业
    第六次作业
    第五次作业
    实验四,实验五
    Java_实验二
  • 原文地址:https://www.cnblogs.com/xiawen/p/3156395.html
Copyright © 2011-2022 走看看