首页 > 其他 > 详细

指针--多重指针作形参(**)

时间:2021-04-29 10:18:12      阅读:20      评论:0      收藏:0      [点我收藏+]

今天遇到这样一个问题:

有类似如下的结构体

struct everythingtest
{
    int a;
    double b,c,d;
};

主函数中已经定义了该类型的一个指针,现需要在函数中生成everythingtest类型的数组,以保存、修改相关数据。但是之后需要将该数组返回,以作他用。

其实通过返回值的方法很容易实现,但是怎样在不通过返回值的方式实现这个功能呢?

查资料之后发现需要用到二重指针。

主函数:

    everythingtest *point;//  指针变量
    in(&point,15);//  15 :重新分配的数组长度  
    cout<<point[10].a;

in函数:

void in(everythingtest**p,int n){
    *p = new everythingtest[n];//  分配空间 大小为 n
    (*p)[10].a = 10086; //  赋值
}

个人理解:

 

**p 其实表示p中存储的是某个地址的地址,*p就表示取出p中的最外层地址,本题中,*p的值就是新分配的数组的地址,要想取具体某个节点的某个值,就需要在*p的地址上+n个结构体的长度

如上的   (*p)[10].a  = 10086  表示对*p 的第十个节点的a内容赋值。

*point 表示point中存储的是指向具体对象的地址, &point 表示取point变量的地址,将&poin传入in(),也就表示 将 某地址的地址传入in()。

参考:http://www.cppblog.com/doing5552/archive/2010/09/28/127994.html

指针--多重指针作形参(**)

原文:https://www.cnblogs.com/study-space/p/14716092.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!