函数为什么调用错误,怎么办,先谢谢大家帮忙了

jinyanhe 2011-02-20 12:34:18
#define MAX_VERTEX_NUM 20

int Floyd(ArcNode** d,int** path,AdjMatrix *G) /*弗洛伊德算法*/
{
int n=G->vexnum;
int i,j,k;
d=new ArcNode *[n];path=new int*[n];
for(i=0;i<n;i++)
{
d[i]=new ArcNode[n];path[i]=new int[n];
for(j=0;j<n;j++)
{
d[i][j].adj=G->arcs[G->vexnum][G->vexnum].adj;
if(i!=j&&d[i][j].adj<INFINITY)path[i][j]=i;
else path[i][j]=-1;
}
}
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(d[i][k].adj+d[k][j].adj<d[i][j].adj)
{
d[i][j].adj=d[i][k].adj+d[k][j].adj;
path[i][j]=path[k][j];
}
return 1;
}
void main()
{
/*G是有向矩阵*/
ArcNode d[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
int path[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
Floyd(d,path,&G);
}

错误提示为调用错误:cannot convert parameter 1 from 'struct ArcNode [20][20]' to 'struct ArcNode ** '


这是为什么呀?怎么办,谢谢大家
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2011-02-20
  • 打赏
  • 举报
回复
高版本的编译器对这种情况要求很苛刻,你可以动态开辟内存,其他不变,传入给函数.

或者修改形参为[][MAX_VERTEX_NUM]就可以了.
a707000646 2011-02-20
  • 打赏
  • 举报
回复
除非你结果体的定义跟你写在参数那里的类型是不一样的
a707000646 2011-02-20
  • 打赏
  • 举报
回复
郁闷,我这里编译可以通过啊
昵称很不好取 2011-02-20
  • 打赏
  • 举报
回复
参数类型不一样,需要的是struct ArcNode **

70,037

社区成员

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

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