我有一个函数接收数组和数组的特定实例。我尝试通过访问其中一个成员" color"来尝试更改数组的特定实例,但实际上并没有改变它,这可以通过调试看到(检查函数运行后的颜色值)主程序)。
我希望有人可以帮助我访问此会员并进行更改。基本上我需要数组的实例,我指定通过引用传递,如果没有别的,但我希望有一种更简单的方法来完成我想要做的事情。
以下是结构:
typedef struct adjEdge{
int vertex;
struct adjEdge *next;
} adjEdge;
typedef struct vertex{
int sink;
int source;
int color; //0 will be white, 1 will be grey, 5 will be black
int number;
adjEdge *nextVertex;
} vertex;
这是功能:
void walk(vertex *vertexArray, vertex *v, int source, maxPairing *head)
{
int i;
adjEdge *traverse;
int moveVertex;
int sink;
int correctedNumber = v->number;
traverse = vertexArray[v->number-1].nextVertex;
if(v->color != 5 && v->sink == 5)
{
sink = v->number;
v->color = 5;
addMaxPair(head, source, sink);
}
else
{
walk(vertexArray, vertexArray[traverse->vertex-1], source, head);
}
}
特别是,v.color
需要更改为5,在递归之后,if条件会阻止它。
答案 0 :(得分:1)
您正在通过 copy 进行参数,因此函数内部的任何更改都不会反映在外部。您需要接受v
作为vertex*
。