zoukankan      html  css  js  c++  java
  • C++引用与指针

    引用和指针是c++的两种复合类型

    一、引用

    通过引用操作,引用和变量被绑定在一起,对引用的操作就是对变量的操作。

    int a=0;

    int &refA=a;

    int &refB=refA;//这样定义引用也是可以的,refB也绑定到了a上

    int &errA;//错误

    1. 引用必须被初始化。
    2. 引用不是对象,不能再被更改。
    3. 引用只能绑定在对象上,不能绑定在字面值常量上或表达式结果上。

    二、指针

    指针存放某个对象的地址

    int *p1,*p2;

    int a=0;

    p1=&a;

    通过使用解引用操作符来访问变量

    int b=*p;

    1. 指针可以不被初始化,那么其值是不确定的。
    2. 指针是对象,可以对指针进行更改。

    (一)空指针

    空指针不指向任何对象,如果定义了一个指针但不知道指向何处,可以用下列方法定义空指针:

    int *p=nullptr;//nullptr是一种特殊类型的字面值,可以被转换成任意其他的指针类型。

    int *p=0;//将指针初始化为字面值0。

    (二)void*指针

    void*指针可以存放任意对象的地址,但是,不能直接操作其指向的对象,因为我们并不知道它指向的对象到底是什么类型,也就无法对知道对这个对象能执行什么操作。

    int a=0;

    void *pv=&a;

    (三)指向指针的指针

    int a=0;

    int *p=&a;

    int **pp=&p;

    (四)指向指针的引用

    int *&rp=p;//从右向左看,&rp是引用,*&rp是对指针的引用,int *&rp是对整型指针的引用,总之是个引用。

    对rp的操作和对p的操作是一样的:

    rp=&b;//p指向b

    *rp=0;//对p指向的对象赋值0

  • 相关阅读:
    NFS安装配置与客户端的优化参数
    DELL硬件防火墙配置
    华为交换机命令
    lvs + keepalive的安装配置
    IPVS 的管理
    奇葩的404报错
    js 程序出发事件
    jvm 参数
    策略模式代替大量的if else
    采购订单行类型校验规则
  • 原文地址:https://www.cnblogs.com/StormWendy/p/8360266.html
Copyright © 2011-2022 走看看