本篇内容主要讲解“C++的二级指针和指针怎么引用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的二级指针和指针怎么引用”吧!
目的:形参指针改变实参指针所指向的对象(即地址)
举例:pointer
指针指向白鸭子whiteDuck
,如果想要设计一个函数,这个函数能够令pointer指向黑鸭子blackDuck。
图示如下:
代码简示如下:
Duck *duck = &oldDuck; someFunction(duck); // 此时duck指向newDuck;
此时,二者指向同一地址,可以对同一对象进行操作。但是形参指针不能改变实参指针所指向的地址,因为二者是两个完全无关的指针对象。函数传递参数时,将实参指针的值传递给形参指针,是一个值传递的过程。
为了让函数能够更改实参指针所指向的地址,需要将实参的地址传入函数。
此时有两种策略来实现目的:
形参为二级指针**p;
形参为指针引用*&p;
下面分别对两种方式进行介绍,并提供相应的代码。
其中Duck类的定义如下:
class Duck { public: Duck(int color) { this->color = color; } // 0表示白色,1表示黑色 int color = 0; };
此时,实参为指针的地址,形参为指针的指针,即形参指向实参。形参对实参进行操作,而不是对实参指向的地址进行操作。
void changeObject(Duck **p) { *p = new Duck(1); } // 调用方式 changeObject(&pointer);
指针引用即指针的引用,指针引用同样是针对指针进行操作,而不是针对指针指向的地址进行操作:
void changeObject(Duck *&p) { p = new Duck(1); } // 调用方式 changeObject(pointer);
到此,相信大家对“C++的二级指针和指针怎么引用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。