1
一個陣列I具有的typedef結構的陣列。訪問在函數C
它被聲明爲這樣:
vertex vertexArray[numberVertices];
然後我有這個在我的主要代碼:
for(i=0;i<numberVertices;i++)
{
if(vertexArray[i].source == 5)
{
source = vertexArray[i].number;
walk(vertexArray, vertexArray[i], source, headMaxPairList);
}
}
爲了希望進行散步:
void walk(vertex *vertexArray, vertex v, int source, maxPairing *head)
{
int i;
adjEdge *traverse;
int moveVertex;
int sink;
moveVertex = vertexArray[v.number-1].number;
if(vertexArray[moveVertex-1].color != 5 && vertexArray[moveVertex-1].sink == 5)
{
sink = vertexArray[moveVertex-1].number;
vertexArray[moveVertex-1].color = 5;
addMaxPair(head, source, sink);
}
else
{
walk(vertexArray, vertexArray[moveVertex-1], source, head);
}
}
但是,我得到了一個在功能賽格故障:
in walk (vertexArray=Cannot access memory at address 0x7fffff3fefe8
我相信這與我傳遞vertexArray的方式做。
這是我的理解,數組實際上是指針,因此vertex *vertexArray
,然後單個成員只是一個頂點,而不是指針,因此vertex v
。
如果有人可以幫助我得到這個正確傳遞,我會感激。
側面說明,如果任何人都可以告訴我,如果步行看起來會正常工作,這是一個加分!
數組是不實際的指針。他們有一些相似之處,但兩者不可互換。有些人稱他們爲常數指針,但我認爲這是一個誤用,會導致混淆。數組是數組。 –
@DavidTitarenco就這樣說,有沒有辦法像C一樣傳遞我的數組呢? – ZAX
有無數的資源概述瞭如何在C(++)中傳遞數組。例如,看到http://stackoverflow.com/questions/2559896/how-are-arrays-passed –