c++之指针常量和常量指针

本质;

常量指针:
即常量是指针,指针为常量也就是存放在指针中的那个地址不能改变.指针存储的是地址,类比于int类型

指针常量:
指向常量的指针,不能用于修改其所指对象的值,即指针指向的对象的值是不能修改的,(所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能不能通过其他途径修改.)

实例:

/*@brief:指针常量和常量指针的区别*/
#include <iostream>
using namespace std;
int main()
{
    /*0)指针的本质:一种复合类型,类似于int类型*/
    int data = 6;
    int *pdata = &data;
    cout<<"pdata="<<pdata<<endl;
    cout<<"&data="<<&data<<endl;
    cout<<"&pdata="<<&pdata<<endl;
    cout<<"*pdata="<<*pdata<<endl;
//--------------------------------------------------------------
    /*1)常量指针,指针是常量*/
    int a = 5;
    int b = 5;
    int *const ptr1 = &a;
   // ptr = &b;//这里就会报错,指针被修改
    a = 7;//这里可以修改
//---------------------------------------------------------------
    /*2)指针常量,指向常量的指针*/
    const double pi = 3.14;
    double p = 3.14;
    double p1 = 2.35;
    const double *ptr2 = &pi;
    double const *ptr3 = &pi;//这里主要是看写法,从右向左结合即可,所以两种写法都正确
    ptr2 = &p;//这里可以
    ptr3 = &p;
    p = 6.31;
    //*ptr3 = 7.25;
   //*ptr2 = 7.25;//报错.这里是指针常量的本质,不可以通过指针修改
    //ptr2 = &p1;//这里也可以,指针常量的本质是不可以通过指针修改指向对象的值,但是没有规定不可以通过其他途径修改
    ptr3 = &p1;
//---------------------------------------------------------------------
    cout<<"ptr1="<<ptr1<<endl;
    cout<<"&ptr1="<<&ptr1<<endl;
    cout<<"*ptr1="<<*ptr1<<endl;
    cout<<"ptr2="<<ptr2<<endl;
    cout<<"&ptr2="<<&ptr2<<endl;
    cout<<"*ptr2="<<*ptr2<<endl;
    cout<<"ptr3="<<ptr3<<endl;
    cout<<"&ptr3="<<&ptr3<<endl;
    cout<<"*ptr3="<<*ptr3<<endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值