码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:rgba   out   方法   通过   修改   类型   struct   class   oid   

今天遇到这样一个问题:

有类似如下的结构体

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

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

标签:rgba   out   方法   通过   修改   类型   struct   class   oid   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!