2017-02-28 59 views
0

我試圖根據文件的行號來設置數組的長度。我在main函數中聲明瞭我的數組並將其傳遞給了setMatrix。在分配數組值時發生分段錯誤

主要功能

int x; 
    x=numberOfId(); 
    int graph[x][x]; 
    int path[x]; 
    char *pathString[x]; 
    setMatrix(graph,path,pathString,x); 

setMatrix功能

void setMatrix(int **graph,int *path,char **pathString,int k){ 
    int i,j;  
for(i=1;i<k;i++){ 
    for(j=1;j<k;j++){ 
     graph[i][j]=INFINITY;//I get error here 
    } 
} 

我敢肯定,我做了一個容易犯的錯誤,但無法看到。

+1

多維數組與指針指針不同。 – EOF

+0

任何想法解決? –

+0

不要嘗試使用多維數組來代替多重間接嗎? – EOF

回答

1

函數定義應匹配陣列:

void setMatrix(int x, int graph[x][x], int path[x], char *pathString[x]) 
{ 

int x必須是第一,以便它是在範圍爲後來的參數。可以使用指針表示法而不是最裏面的數組邊界,但它可以作爲使用數組表示法的自記錄。

數組和指針是不同的; int **int[x][x]不一樣。