传递给函数时更改数组指针的值

时间:2012-10-10 03:32:33

标签: c arrays parameter-passing pass-by-reference

  

可能重复:
  C: change pointer passed by value

我有一个函数接收数组和数组的特定实例。我尝试通过访问其中一个成员" 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条件会阻止它。

1 个答案:

答案 0 :(得分:1)

您正在通过 copy 进行参数,因此函数内部的任何更改都不会反映在外部。您需要接受v作为vertex*