关于指针作为函数返回值丢失值的问题

记录个小问题:

定义了一个结构体:

struct vertex//定义顶点结构体
{
    int v_id;//顶点编号
    vector<string> attr;//顶点属性
    vector<vertex*> edge;//边
    int dist = INT_MAX;//用于计算最短距离时使用,表示距离查询顶点的最短距离
};

接着定义了图:

vertex G[VertexMaxNum];//定义原始图

在写某个函数的时候想把上面的图,即自定义结构体类型的数组指针作为函数的返回值:

vertex* ShortestPath(vertex G[],int query_id,int d)

在这个函数里,作为返回值的G0一切正常,可是在调用ShortestPath函数将其值存入vertex *G0中后,G0中的值全部丢失了。翻C++primer 6.3.2节说不要返回局部对象的引用或指针,因为函数完成后,它所占的存储空间也随之释放掉。因此,函数终止意味着局部变量的引用将指向不再有效的内存区域。感觉就是这个原因,又查阅了一些别的资料,决定干脆不返回数组指针了,在函数中对数组进行修改返回void,直接调用函数也许是比较好的选择。。

关于这个问题我再研究一下再补充这篇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值