• c++中指针常量,常指针,指向常量的常指针区分


    const char * myPtr = &char_A;//指向常量的指针
    char * const myPtr = &char_A;//常量的指针
    const char * const myPtr = &char_A;//指向常量的常量指针

    1.指针常量

    **从字面意思可以看出,指针是一个常量,也就是地址不能被修改

    #include <iostream>
    using namespace std;
    
    void main()
    {
    
     int a = 10;
     int const *p = &a;
     cout<<a<<endl;
     cout<<*p<<endl;
        int b = 20;
    }

    我们可以改变指针变量p所指向的内容,而不能改变p的地址空间,如 添加上p = &b;我们就会发现编译错误!

    2.指向常量的指针

    特点是指针所保存的地址可以改变,然而指针所指向的值却不可以改变。
    int const p,比较好记的方法:把 读作pointer to然后从后往前读.
    p is a pointer to const int,p是指向常量的指针

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    void main()
    {
        int i1=30;
        int i2=40;
        const int * pi=&i1;
        printf("%d
    ", *pi ) ;   //输出是30
        pi=&i2;     //注意这里,pi可以在任意时候重新赋值一个新内存地址
        i2=80;     //想想看:这里能用*pi=80;来代替吗?当然不能
        printf("%d
    ", *pi ) ;   //输出是80
    
        system("pause");
    }

    3 指向常量的常指针

    特点是指针所保存的地址不可变,指针所指向的数值也不可变
    **const int const*p

    典型例子
    ①int x=3; const int &y=x;//x=10;正确//y=20;错误,不能改变y的值
    ②const int x=3;x=5;错误
    ③int x=3; const int y=x;y=5;错误
    ④int x=3;const int *y=&x;*y=5;错误
    ⑤int x=3,z=4;int *const y=&x;y=&z;错误
    ⑥const int x=3; const int &y=x;y=5;错误
    ⑦int const a = 3; int p = &a;错误//指针指向const修饰的变量时,应该是const int const *p = &a;***

  • 相关阅读:
    基于 cobbler 实现自动安装 linux 系统
    自动安装 linux 系统
    从12306网站新验证码看Web验证码设计与破解
    用java实现删除文件夹里的所有文件
    本机访问其它电脑上的oracle数据库
    powerdesigner 15 如何导出sql schema
    使用PowerDesigner建立数据库模型
    com.google.gson.stream.MalformedJsonException的解决办法
    Spring注解详解
    nginx中文手册内容说明
  • 原文地址:https://www.cnblogs.com/snailclimb/p/9086519.html
Copyright © 2020-2023  润新知