C++指针常量与常量指针

指针常量:指针本身是常量,指针的值不能改变
常量指针:指针指向的值是“常量”(打引号表示的是不能通过指针改变指向的值,这个层面的常量,不一定要真的指向常量)
上代码和注释:

#include<iostream>
using namespace std;
int main(){
    const int a=1;// const int
    int b=2,c=3;

    //理解:可以从右往左读,p is a,*表示"pointer to"

    // 1,测试常量指针
    const int *p1;// p is a pointer to int const,常量指针:指向常量的指针
    p1=&b;// 不一定要指向常量
    cout<<*p1<<endl;
    *p1=1;//不能通过指针改变指向的值,但该值(非常量时)可以通过其他方式改变,如b=1
    cout<<*p1<<endl;

    // 2,测试指针常量
    // p is const pointer to int,指针常量:指针本身是常量
    int *const p3=&b; // 既然指针本身是常量,必须赋予初值
    cout<<*p3<<endl;
    p3=&c;// 指针为常量,也就不能再赋值,即指向不能变(但是指向的对象是可变的)
    cout<<*p3<<endl;
    
    // 3,既是指针常量,又是常量指针
    // 根据以上可知,该指针指向不能变,也不能通过该指针取修改指向的值(其他方式允许)
    const int *const p4=&b;// p is const pointer to int const
    b=6;// 可以通过其他方向改变指向的值
    cout<<*p4<<endl;

    // 4,其他写法:int和const可以交换
    // int const *p2;// p is a pointer to const int,so p2=p1
    // int const *const p5;// p is const pointer to const int,so p5=p4 
    
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章