关于C++中的常指针/指向常数的指针/指向常数的常指针的测试

代码:

#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
    cout<<"测试1:常指针"<<endl;
    int a=1;
    int a2=10;
    int *const p1 = &a;//在定义时就给初值
    cout<<"a="<<*p1<<endl;
    a=2;//允许直接改变a的值
    cout<<"a="<<*p1<<endl;
    *p1=3;//允许通过指针改变a的值
    cout<<"a="<<*p1<<endl;
    cout<<"a="<<a<<endl;
//    p1=&a2;   不被允许
    cout<<"测试2:指向常量的指针"<<endl;
    cout<<"测试2.1"<<endl;
    int b=1;
    int const *p2 ;
    p2=&b;
    cout<<"b="<<*p2<<endl;
    b=2;//允许直接改变b的值
//    *p2=3; 不允许通过指针来改变b的值
    cout<<"测试2.2"<<endl;
    int c=1;
    cout<<"b="<<*p2<<endl;
    const int *p3;//交换const与int的位置,仍为指向长量的指针
    p3=&c;
    cout<<"c="<<*p3<<endl;
//    *p3=2; 不被允许
    cout<<"测试3:指向常量的常指针"<<endl;
    cout<<"测试3.1"<<endl;
    int d=1;
    int d1=10;
    const int *const p4=&d;
    cout<<"d="<<*p4<<endl;
    d=2;
    cout<<"d="<<*p4<<endl;//可以直接改变d的值
//    *p4=3;  不允许通过该指针改变d的值
//    p4=&d1; 不允许改变该指针指向的地址
    cout<<"测试3.2"<<endl;
    int e=1;
    int e1=2;
    int const *const p5=&e;//交换 int 与第一个const 的位置
    cout<<"e="<<*p5<<endl;
       //*p5=3;  不允许通过该指针改变d的值
      // p5=&e1; 不允许改变该指针指向的地址
    return 0;
}

运行结果:

测试1:常指针
a=1
a=2
a=3
a=3
测试2:指向常量的指针
测试2.1
b=1
测试2.2
b=2
c=1
测试3:指向常量的常指针
测试3.1
d=1
d=2
测试3.2
e=1
发布了51 篇原创文章 · 获赞 5 · 访问量 4214

猜你喜欢

转载自blog.csdn.net/qq_43519498/article/details/88355636