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

本文探讨如何在C++中使用二重指针实现不通过返回值创建并传递everythingtest数组,涉及内存分配、结构体操作及指针深入理解。通过实例解析如何在函数in()中创建并设置元素,同时强调了地址和指针层次的概念。
摘要由CSDN通过智能技术生成

今天遇到这样一个问题:

有类似如下的结构体

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值