C 结构向量到函数的传递

C 结构向量到函数的传递,c,function,graph,vector,struct,C,Function,Graph,Vector,Struct,我的程序正在处理graph,我正在尝试创建一个边向量。我的程序中的边缘类型如下: typedef struct arco{ TipoNodo p, s; int peso; }arco; 其中p和s是顶点,peso是边的长度 我试图创建一个由邻接矩阵生成的边向量,但是当我将arco类型的向量传递给我的函数时,我的程序会产生运行时错误。我应该如何将arcos向量传递给我的函数,并修改他的元素 主要代码: case 'f': printf("Algoritmo

我的程序正在处理graph,我正在尝试创建一个边向量。我的程序中的边缘类型如下:

typedef struct arco{
    TipoNodo p, s;
    int peso;
    }arco;
其中p和s是顶点,peso是边的长度

我试图创建一个由邻接矩阵生成的边向量,但是当我将arco类型的向量传递给我的函数时,我的程序会产生运行时错误。我应该如何将arcos向量传递给我的函数,并修改他的元素

主要代码:

case 'f':
      printf("Algoritmo di Dijkstra. Scrivere Nodo i di partenza: ");
      scanf("%d", &i);
      arco vet[MaxArchi];

          int dimensione;
          printf("fuck\n");
//I'm debugging just the matrix part, becouse I think that the error with adjacency list is the same.
          if(matlist=='m') dimensione = CodaMinPrioritaMatrice(grafoMat, vet); else dimensione = CodaMinPrioritaLista(grafoList, vet);
//printing the array, the program doesn't arrive here.
          for(peso = 0; peso <dimensione; peso++) printf("%d->%d, (%d)\n", vet[peso].p, vet[peso].s, vet[peso].peso);
          break;
案例“f”:
printf(“Algoritmo di Dijkstra.Scrivere Nodo i di partenza:”);
scanf(“%d”、&i);
阿科兽医[MaxArchi];
整数维;
printf(“操”\n);
//我只是调试矩阵部分,因为我认为邻接列表的错误是相同的。
如果(材料清单=='m')尺寸=CodaMinPrioritaMatrice(grafoMat,兽医);其他维度=Codamini Prioritalista(素食主义者、兽医);
//打印数组时,程序不会到达此处。

对于(比索=0;比索这将修复您的代码-

将函数定义更改为:

int CodaMinPrioritaMatrice(GrafoMatrice *grafo, arco *vet[]){
致:


这将修复您的代码-

将函数定义更改为:

int CodaMinPrioritaMatrice(GrafoMatrice *grafo, arco *vet[]){
致:


我认为你需要在你的代码中再做一次修改

int dimensione=0;
您正在使用未初始化的变量


这可能会对您有所帮助。

我认为您需要在代码中再做一次更改

int dimensione=0;
您正在使用未初始化的变量


这可能会对您有所帮助。

您将其作为值传递:而不是将其作为引用传递:CodaMinPrioritaMatrice(grafoMat,&vet)@M您的意思可能是“传递指向它的指针”.C中没有传递引用。我认为向量是作为指针传递的..也没有'&'。例如,如果我在函数中修改向量中的一个值,这个值也会在main中修改,如果我传递向量时没有'&',你将它作为一个值传递:改为作为引用传递:CodaMinPrioritaMatrice(grafoMat,&vet)@你的意思可能是“向它传递一个指针”。C中没有传递引用。我认为向量是作为指针传递的。也没有“&”。也就是说,如果我在函数中修改向量中的一个值,这个值也会在主函数中修改,如果我传递向量时没有“&”