C++的二级指针和指针怎么引用

C++的二级指针和指针怎么引用

本篇内容主要讲解“C++的二级指针和指针怎么引用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的二级指针和指针怎么引用”吧!

    目的:形参指针改变实参指针所指向的对象(即地址)

    举例:pointer指针指向白鸭子whiteDuck,如果想要设计一个函数,这个函数能够令pointer指向黑鸭子blackDuck。

    图示如下:

    代码简示如下:

    Duck*duck=&oldDuck;someFunction(duck);//此时duck指向newDuck;

    1、形参与实参均为指针时达不到此目的

    此时,二者指向同一地址,可以对同一对象进行操作。但是形参指针不能改变实参指针所指向的地址,因为二者是两个完全无关的指针对象。函数传递参数时,将实参指针的值传递给形参指针,是一个值传递的过程。

    2、解决方案——指针引用或二级指针

    为了让函数能够更改实参指针所指向的地址,需要将实参的地址传入函数。

    此时有两种策略来实现目的:

    • 形参为二级指针**p;

    • 形参为指针引用*&p;

    下面分别对两种方式进行介绍,并提供相应的代码。

    其中Duck类的定义如下:

    classDuck{public:Duck(intcolor){this->color=color;}//0表示白色,1表示黑色intcolor=0;};

    (1)形参为二级指针**p

    此时,实参为指针的地址,形参为指针的指针,即形参指向实参。形参对实参进行操作,而不是对实参指向的地址进行操作。

    voidchangeObject(Duck**p){*p=newDuck(1);}//调用方式changeObject(&pointer);

    (2)形参为指针引用*&p

    指针引用即指针的引用,指针引用同样是针对指针进行操作,而不是针对指针指向的地址进行操作:

    voidchangeObject(Duck*&p){p=newDuck(1);}//调用方式changeObject(pointer);

    到此,相信大家对“C++的二级指针和指针怎么引用”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    发布于 2022-03-09 22:48:53
    收藏
    分享
    海报
    0 条评论
    22
    上一篇:.NET中如何使用FastReport实现打印功能 下一篇:分布式微服务系统下调用链追踪技术实例分析
    目录

      0 条评论

      本站已关闭游客评论,请登录或者注册后再评论吧~

      忘记密码?

      图形验证码