标签: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