2014-06-29 433 views
0

我在C中有點生鏽,我試圖初始化一個矩陣,但我遇到了一些問題。但有些研究,但我找不到任何東西。C中的矩陣的分割錯誤

我在得到一個分段錯誤:

char **board; 
board = (char **)malloc(N*N*sizeof(char)); 
board[0][0] = '.'; // segmentation fault here 

我可以做這樣的:

char board[N][N] = '.'; 

,但我需要的矩陣傳遞給函數,通過引用,但我發現也是錯誤,所以我試圖從頭開始使用雙指針。

謝謝。

+1

顯示函數聲明期望採取矩陣 –

+0

搜索:如何分配2d數組。 – this

+0

@這是一個很好的答案,很難找到一個線程。 [這個答案](http://stackoverflow.com/a/7653609/1505939)是我能找到的最好的。 –

回答

1

你有三種選擇:

  1. 分配堆棧(或全球)像你不想做明顯。這個錯誤可能是因爲你認爲一個數組的數組可以被當作一個指向指針的指針來處理,而它不能。

  2. 動態分配,首先是第一維,併爲每一行分配第二維。您錯過了代碼中的最後一步。

  3. 像現在這樣使用單個維度動態分配,但使用例如row * column_length + column作爲索引。

+0

謝謝。我看到了第二個,但希望有一個更清潔的方式。無論如何,它工作。 再次感謝你。 – tsm