我有一个 typedef 结构数组。
它是这样声明的:
vertex vertexArray[numberVertices];
然后我在我的主要代码中有这个:
for(i=0;i<numberVertices;i++)
{
if(vertexArray[i].source == 5)
{
source = vertexArray[i].number;
walk(vertexArray, vertexArray[i], source, headMaxPairList );
}
}
希望进行步行:
void walk(vertex *vertexArray, vertex v, int source, maxPairing *head)
{
int i;
adjEdge *traverse;
int moveVertex;
int sink;
moveVertex = vertexArray[v.number-1].number;
if(vertexArray[moveVertex-1].color != 5 && vertexArray[moveVertex-1].sink == 5)
{
sink = vertexArray[moveVertex-1].number;
vertexArray[moveVertex-1].color = 5;
addMaxPair(head, source, sink);
}
else
{
walk(vertexArray, vertexArray[moveVertex-1], source, head);
}
}
但是,我在函数上遇到了段错误:
in walk (vertexArray=Cannot access memory at address 0x7fffff3fefe8
我相信这与我传递 vertexArray 的方式有关。
我的理解是数组实际上是指针,因此vertex *vertexArray
然后一个单独的成员只是一个顶点,而不是一个指针vertex v
。
如果有人可以帮助我正确通过,我将不胜感激。
旁注,如果有人能判断我的步行是否能正常工作,那就太好了!