[C++]指针知识点小结

  1. 指针的声明
    string  *p	//指向string类型的指针,等价于string*  p
    string*  p1, p2	//p1是指向string类型的指针,p2为string,等价于 string  *p
    	//和string p2
    const double  *cptr	//指向double常量的指针
    double  *const cptr	//指向double类型的常量指针
    ///
    int ival =1024;
    int  *pi=&ival;
    int  **ppi=π	//指向指针的指针
    

  2. 指针的取值

    l  保存一个特定对象的地址

    l  指向某个对象后面的另一个对象

    l  0值,表示不指向任何对象

    int	ival=1024;
    int  *pi=0;	//不指向任何对象,将其他int值赋给指针是非法的即 int *pi=5 //error
    int  *pi2=&ival	//pi2存放ival地址,指向ival
    pi=pi2;		//ok,pi2也指向ival
    /
    int  *p1=&ival	//初始化赋值,等价于int  *p1;  p1=&ival;
    int  *p2;		
    *p2=&ival	//erro类型不匹配
    

  3. 指向const对象的指针(实际程序中,作为函数形参,从而确保传递给函数的实际对象在函数中不会因为形参而被修改)

    l  指向const对象的指针,不能用来改变其所指的const的值,但是可以指向其他const对象

    const double ival=1024;
    const double ival2=2014;
    double ival3=3096;
    const double *cptr;=&ival;
    *cptr=20;		//error
    cptr=&ival2;	//ok,但是可以指向新的const对象
    cptr=&ival3;	//ok, 或其它非const对象
    

    l  普通、非const对象指针不能指向const对象

    const double pi=314;
    double *ptr=π	//error
    


    l  不能用void *指针保存const对象地址,必须用const void *类型

    const int universe =42;
    const void *cpv=&universe;	//ok
    void *pv=&universe	//error
    

  4. const指针

    l  指针本身的值不能修改

    int num=0;
    int num2=3;
    int *const pi=#	//ok
    pi=&num2;	//error
    

    l  但其所指向的对象值能否修改完全取决于该对象的类型

    int num=0;
    int *const pi=#	//ok
    *pi=15;
    

  5. 指向const对象的const指针
    const double pi=3.14;
    const double *const p=π
    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值