数据结构图中getvex函数的问题

zygysat1989 2011-03-15 05:11:45
1. typedef char VertexType[MAX_NAME];
。。。。。
2. typedef struct
3. {
4. VertexType vexs[MAX_VERTEX_NUM]; // 顶点向量
5. AdjMatrix arcs; // 邻接矩阵
6. int vexnum,arcnum; // 图的当前顶点数和弧数
7. GraphKind kind; // 图的种类标志
8. } MGraph;
。。。。。。
9.
10. VertexType *GetVex(MGraph G,int v)
11. {
12. // 初始条件: 图G存在,v是G中某个顶点的序号。操作结果: 返回v的值
13. if(v>=G.vexnum||v<0)
14. exit(ERROR);
15. return &G.vexs[v];
16. }
17. int main()
18. {
19. ....
20. printf("%s\n",*GetVex(G,v));
21. .....
22. }
编译执行时,提示“15行:warning: function returns address of local variable”,执行时到这个函数就卡住了,问一下怎么修改?
...全文
343 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fay8048 2011-03-18
  • 打赏
  • 举报
回复
楼主英语不怎么好吧
都提示你返回指针类型不兼容啦
你去看看VertexType是什么类型
要是还不行就肯能是编译器之间识不同类型的差异
这种情况没问题
zygysat1989 2011-03-15
  • 打赏
  • 举报
回复
我修改为:
10. VertexType *GetVex(MGraph *G,int v)
11. {
12. // 初始条件: 图G存在,v是G中某个顶点的序号。操作结果: 返回v的值
13. if(v>=G.vexnum||v<0)
14. exit(ERROR);
15. return (*G).vexs[v];
16. }
。。。。。。
20. printf("%s\n",*GetVex(&G,v));
后,可以正确执行了,但是还是有警告:“15行:warning: return from incompatible pointer type|”
wyt00000 2011-03-15
  • 打赏
  • 举报
回复
GetVex函数的形参Mgraph G,生命周期在些GetVex函数内,函数返回后就没了,返回G.vexs有什么用?
不加温水 2011-03-15
  • 打赏
  • 举报
回复
*GetVex(G,v)
编译器会认为GetVex是一个函数指针,好像不对
还有参数G是按值来传递的,函数里面返回的是一个临时的局部变量的地址,当然会有警告提示
loveanybody 2011-03-15
  • 打赏
  • 举报
回复
很乱 。。。。。 重新构造一下吧
loveanybody 2011-03-15
  • 打赏
  • 举报
回复
VertexType vexs[MAX_VERTEX_NUM]; // 顶点向量 你这定义的是二维数组吗?
loveanybody 2011-03-15
  • 打赏
  • 举报
回复
printf("%s\n",*GetVex(G,v)); 错误可能出在了 *GetVex(G,v) 你去掉*号看看吧。
qq120848369 2011-03-15
  • 打赏
  • 举报
回复
VertexType *GetVex(MGraph *G,int v)
Johnxme126 2011-03-15
  • 打赏
  • 举报
回复
用MGraph* G,然后相应修改下应该就可以了
loveanybody 2011-03-15
  • 打赏
  • 举报
回复
我很奇怪你的写法 为什么 你还要用typedef来定义一个结构?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧