天天看点

c语言多重指针做形参,指针--多重指针作形参(**)

今天遇到这样一个问题:

有类似如下的结构体

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