今天遇到这样一个问题:
有类似如下的结构体
struct everythingtest
{
int a;
double b,c,d;
};
主函数中已经定义了该类型的一个指针,现需要在函数中生成everythingtest类型的数组,以保存、修改相关数据。但是之后需要将该数组返回,以作他用。
其实通过返回值的方法很容易实现,但是怎样在不通过返回值的方式实现这个功能呢?
查资料之后发现需要用到二重指针。
主函数:
everythingtest *point;// 指针变量
in(&point,15);// 15 :重新分配的数组长度
cout<
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
标签:函数,point,--,地址,作形,数组,everythingtest,指针
来源: https://www.cnblogs.com/study-space/p/14716092.html