可能重复:
C:按值传递的更改指针
我有一个函数可以同时接收数组和数组的特定实例。我尝试通过访问其成员之一“颜色”来更改数组的特定实例,但它实际上并没有改变它,正如调试所见(在函数在主程序中运行后检查颜色的值)。
我希望有人可以帮助我访问该成员并进行更改。本质上,如果没有别的,我需要我指定的数组实例通过引用传递,但我希望有一种更简单的方法来完成我正在尝试做的事情。
这是结构:
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 条件会阻塞它。