vector attr;//顶点属性 vector 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,直接调用函数也许是比较好的选择。。

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

warning: function returns address of local variable [enabled by default] 警告信息表示, 函数 返回了一个局部变量地址,这就是造成 返回值 丢失 的原因。 在C/C++编程时不要返回局部对... 结构体(struct)的sizeof ,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐 问题 。先看下面定义的两个结构体.struct{  char a;  short b;  char c;}S1;struct{ char  a; char  b; short c;}S2;分别用程序测试得出sizeof(S1)=6 , sizeof(S2)=4 可见,虽然两个结构体所含的元 字符 指针 函数 返回值 问题 今天学弟问了这么一道 问题 ,为什么 指针 类型的 函数 返回值 不是 指针 而是一串字符,一开始我也很好奇为什么?后来看了一下原题,发现这个 函数 是一个字符 指针 函数 返回值 是一个字符串,这就说得通了。 字符 指针 返回值 指针 (地址),但是字符串的名字就是地址,然后又因为cout的重载,遇到这种情况,会自动输出字符串。简单点来说就是,cout这个类他重载了char这个运算符,当遇到char...