0

可能重复:
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 条件会阻塞它。

4

1 回答 1

1

您通过副本获取参数,因此函数内部的任何更改都不会反映在外部。您需要接受vas vertex*

于 2012-10-10T03:43:13.300 回答